1

構築しなければならないライブラリがたくさんあります。ライブラリごとに 3 つのシンボリック リンクを作成します。を使用して 2 つのシンボリック リンクを作成します。

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

しかし、残りの 2 つは次を使用して作成されます。

#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)

最後の 2 つは、make install が使用された場合にのみ作成されます。make install を使用せずにすべてのシンボリック リンクを作成する方法はありますか。?

4

1 に答える 1

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}
)
于 2013-04-27T01:00:16.000 に答える