我有一个生成多个可执行文件的 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 文件中存在的所有 conan 安装调用 - 因此安装的软件包比必要的要多。
# 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 调用取决于我实际想要构建的目标?