2016-07-04 3 views
0

У меня есть CMakeLists.txt файл, который строит совместно LIB, как ан ExternalProject и этой библиотеки Необходимо установить в определенном месте, так что он может быть подобран основной проект в время сборки. Я использую следующую строку, чтобы выполнить процесс установки:Целевой файл терпит неудачу во время установки сцены с 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 это имя библиотеки.