CPack在add_subdirectory()

时间:2018-07-16 14:30:11

标签: cmake

我有一个用于项目的CMakeLists.txt文件,在deps/SFML下,我已将SFML 2.5.0 git repo作为依赖项签出。我使用add_subdirectory()添加此目录以自动构建SFML,同时使用target_link_libraries()链接SFML。

SFML决定调用一些install()DIRECTORY指定的COMPONENT指令。这样,构建我的 NSIS 生成的安装程序包时,我看到可以安装的“开发”组件可以安装一些文件。

如何正确禁用这些install目标?

CMake邮件列表says 使用COMPONENT选项为您自己的项目安装(),然后如果您要与CPack打包,则选择基于组件的软件包。如果不能通过组件命名来控制SFML将来做什么,并且我的项目或其他项目也可能使用“开发”作为组件,那么我不可能禁用这样的通用组件。我该怎么做才能将其禁用?

1 个答案:

答案 0 :(得分:0)

您可以使用ExternalProject_Add()代替add_subdirectory()

类似这样的东西:

include(ExternalProject)
ExternalProject_Add( SFML_PROJ
    INSTALL_COMMAND "" #do nothing
    SOURCE_DIR "${CMAKE_SOURCE_DIR}/deps/SFML"
    BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}"
    STEP_TARGETS build
)
add_dependencies(YOUR_PROJ SFML_PROJ)
target_link_libraries(YOUR_PROJ "${CMAKE_CURRENT_BINARY_DIR}/SFML_libname")`