創建空的框架,我想使用CMake的功能FIXUP_BUNDLE修復了一個應用程序包,但我越來越安裝時的警告和缺乏更好的術語,而不是一個固定起來捆綁。CMake的:FIXUP_BUNDLE在OS X
的安裝包具有合理的結構,但它使用的框架是不正確的複製。在只有每個框架的目錄結構被複制,而不是實際的共享庫二進制文件。例如,我的包使用SFML 2.0的System框架。請注意,我使用的所有SFML框架都存儲在/Library/Frameworks
中。以下是我得到MyApp.app/Contents/Frameworks/
相對於這個SFML組件:
sfml-system.framework/
Versions/
2.0.0/
這就是我得到的,只是目錄。實際SFML系統框架具有這樣的結構:
sfml-system.framework/
Resources (this is a symlink)
sfml-system (this is a symlink)
Versions/
2.0.0/
Resources/
Info.plist
sfml-system (this is the actual library binary)
Current (this is a symlink)
在我的項目,可執行文件都具有相同的格式,所以我有一個小的功能,使用這種通用格式進行添加。該功能只是增加了可執行文件,設置庫在對鏈接和安裝時間,安裝的應用程序包和調用FIXUP_BUNDLE。下面是函數:
FUNCTION(ADD_CUSTOM_EXECUTABLE TARGET HEADERS SOURCES DEPENDENCIES)
ADD_EXECUTABLE(${TARGET} MACOSX_BUNDLE ${HEADERS} ${SOURCES} ${ARGN})
TARGET_LINK_LIBRARIES(${TARGET} ${DEPENDENCIES})
INSTALL(TARGETS ${TARGET} BUNDLE DESTINATION .)
INSTALL(CODE "
INCLUDE(BundleUtilities)
FIXUP_BUNDLE(${CMAKE_INSTALL_PREFIX}/${TARGET}.app \"\" \"\")
")
ENDFUNCTION(ADD_CUSTOM_EXECUTABLE)
,因爲我目前沒有使用任何插件,我不爲任何的FIXUP_BUNDLE的LIBS或DIRS參數傳遞。該項目ALL_BUILD在Xcode中建立的罰款,並安裝項目不會失敗運行,但會產生許多警告像這樣通過otool -L
發現每個庫。下面是顯示警告,SFML的制度框架開始一個例子,幾乎立即FIXUP_BUNDLE被調用後:
fixup_bundle
app='/Users/user/Desktop/SFML_Testing_BUILD/dist/MyApp.app'
libs=''
dirs=''
fixup_bundle: preparing...
warning: embedded item does not exist 'Users/user/Desktop/SFML_Testing_BUILD/
dist/MyApp.app/Contents/Frameworks/sfml-system.framework/Versions/2.0.0/
sfml-system'
warning: cannot resolve item '@executable_path/../Frameworks/
sfml-system.framework/Versions/2.0.0/sfml-system'
possible problems:
need more directories?
need to use InstallRequiredSystemLibraries?
run in install tree instead of build tree?
和短位後,像這樣的東西:
warning: target '@executable_path/../Frameworks/sfml-system.framework/Versions/
2.0.0/sfml-system' is not absolute...
warning: target '@executable_path/../Frameworks/sfml-system.framework/Versions/
2.0.0/sfml-system' does not exist...
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/
usr/bin/otool: can't open file: @executable_path/../Frameworks/
sfml-system.framework/Versions/2.0.0/sfml-system (No such file or directory)
otool: can't open file: @executable_path/../Frameworks/
sfml-system.framework/Versions/2.0.0/sfml-system
(No such file or directory)
有誰知道如何解決這個問題?我搜索了互聯網尋求解決方案,但沒有運氣。