2016-07-04 76 views
0

我有一個CMakeLists.txt文件正在建設一個共享 LIB爲EN ExternalProject和安裝在特定的位置這個LIB的需求,以便它可以通過在主項目有所回升建立時間。我使用以下行來執行安裝過程:目標文件失敗過程中安裝階段,CMake的

install(FILES $<TARGET_FILE:of_shared> DESTINATION oF/lib) 

然而,這種失敗:

Install the project... 
-- Install configuration: "" 
CMake Error at cmake_install.cmake:31 (FILE): 
file INSTALL cannot find 
"/Users/me/packages/builds/x86_64/of-0.9.3-osx-release/$<TARGET_FILE:of_shared>". 


make[3]: *** [install] Error 1 
make[2]: *** [of_shared-prefix/src/of_shared-stamp/of_shared-install] Error 2 
make[1]: *** [CMakeFiles/of_shared.dir/all] Error 2 
make: *** [all] Error 2 

這可能是某種形式的兼容性錯誤,也許CMake的版本之間。我正在使用CMake 2.8.12。

這些都是相關的CMake線:

add_library(core OBJECT ${OF_SOURCE_FILES}) 
add_library(of_shared SHARED $<TARGET_OBJECTS:core>) 

set_target_properties(of_shared PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin) 
set_target_properties(of_shared PROPERTIES OUTPUT_NAME openFrameworks) 

target_link_libraries(of_shared ${OF_CORE_FRAMEWORKS} ${OF_ADDON_FRAMEWORKS} ${OF_CORE_LIBS} ${OF_ADDON_LIBS}) 

install(FILES $<TARGET_FILE:of_shared> DESTINATION oF/lib) 
install(FILES libs/fmodex/lib/osx/libfmodex.dylib DESTINATION oF/lib) 
install(DIRECTORY libs/glut/lib/osx/GLUT.framework DESTINATION .) 

顯然與$<TARGET_FILE:of_shared>該位失敗。除此之外,一切都在發揮作用。我可以看到正在創建的共享庫。

+0

也許我應該這樣使用: 'install(TARGETS mySharedLib LIBRARY DESTINATION lib)''而不是'install(FILES ...)'' – symbolix

回答

0

我自己找到了解決方案。而不是使用:

install(FILES $<TARGET_FILE:of_shared> DESTINATION openFrameworks/lib) 

應該使用:

install(TARGETS of_shared LIBRARY DESTINATION openFrameworks/lib) 

在這種情況下of_shared是庫的名稱。