我有一个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调用取决于我实际要构建的目标?
答案 0 :(得分:0)
不幸的是,宏conan_cmake_run
并没有区分涉及哪个目标,甚至没有执行过该目标。您可以使用CMake选项运行conan_cmake_run
或不运行。
此外,您可以在问题https://github.com/conan-io/cmake-conan/issues/105之前对您的请求进行评论/投票
致谢!