2013-04-26 111 views
1

我有一堆我必須構建的庫。對於每個庫我創建3個sym-links。 我創建使用兩種符號鏈接:在不使用'make install'的情況下添加cmake中的符號鏈接

add_library(${PROJECT_NAME} ${SRC}) 
set_target_properties(${PROJECT_NAME} PROPERTIES SOVERSION ${perception_kit_VERSION}) 
target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBS} ${Boost_LIBS}) 

但其餘兩個使用創建:

#code for generating symlink. will work with make install 
if (CMAKE_HOST_UNIX) 
    set (libname_major_minor_patch "lib${PROJECT_NAME}.so.${perception_kit_VERSION_MAJOR}.${perception_kit_VERSION_MINOR}.${perception_kit_VERSION_PATCH}") 
    set (libname_major_minor "lib${PROJECT_NAME}.so.${perception_kit_VERSION_MAJOR}.${perception_kit_VERSION_MINOR}") 
    set (libname_major "lib${PROJECT_NAME}.so.${perception_kit_VERSION_MAJOR}") 
    set (libname "lib${PROJECT_NAME}.so") 

    install(CODE " 
      EXECUTE_PROCESS (COMMAND ln -sf ${libname_major_minor_patch} ${libname_major_minor} WORKING_DIRECTORY ${LIBRARY_OUTPUT_PATH}) 
") 
    install(CODE " 
      EXECUTE_PROCESS (COMMAND ln -sf ${libname_major_minor_patch} ${libname_major} WORKING_DIRECTORY ${LIBRARY_OUTPUT_PATH}) 
") 

endif(CMAKE_HOST_UNIX) 

最後兩個創建make安裝時才使用。有沒有辦法讓所有的sym鏈接不使用make install。 ?

回答

5

要執行生成後命令,你可以因此,在這種情況下使用add_custom_command(TARGET ...)

,我想你想要的東西像

add_custom_command(
    TARGET ${PROJECT_NAME} POST_BUILD 
    COMMAND ln -sf ${libname_major_minor_patch} ${libname_major_minor} 
    COMMAND ln -sf ${libname_major_minor_patch} ${libname_major} 
) 
+0

這工作。謝謝 ! – navderm 2013-04-27 17:22:43

相關問題