如何根据构建的目标限制cmake命令

时间:2019-02-20 15:26:53

标签: cmake conan

我有一个cmake项目,该项目可生成多个可执行文件。我想将每个可执行文件打包在单独的Docker容器中,因此在Dockefile中,我仅构建了所需的目标:

RUN mkdir build \
    && cd build \
    && cmake /app/project -DCMAKE_BUILD_TYPE=Release
    && make -j 2 myExecutable \
    && make install/fast

这可以按预期工作,但是我遇到了conan cmake integration的问题。安装是在调用cmake时完成的,而不是在实际构建过程中完成的-这意味着,无论我要实际构建哪个目标,都将调用cmake文件中存在的所有柯南安装调用-这样一来,安装了比必要数量更多的软件包。

# for every target
# include conan dependencies (each target has its own conanfile.txt)
conan_cmake_run(CONANFILE conanfile.txt
        BASIC_SETUP CMAKE_TARGETS
        BUILD_TYPE "${CMAKE_BUILD_TYPE}"
        BUILD outdated
        ${update_conan}
        )
conan_target_link_libraries(${PROJECT_NAME})

有没有一种方法可以使cmake调用取决于我实际要构建的目标?

1 个答案:

答案 0 :(得分:0)

不幸的是,宏conan_cmake_run并没有区分涉及哪个目标,甚至没有执行过该目标。您可以使用CMake选项运行conan_cmake_run或不运行。

此外,您可以在问题https://github.com/conan-io/cmake-conan/issues/105之前对您的请求进行评论/投票

致谢!