一些构建系统,如Visual Studio (MSBuild),使用 “多配置” 环境。也就是说,即使项目只配置了一次,您也可以直接在集成开发环境中切换不同的配置 (如调试/发布) 并在那里构建。
上面的示例使用Conan cmake生成器,该生成器创建单个conanbuildinfo.cmake文件。如果我们在不同的文件夹中内置配置,这不是问题。每个都将包含自己的conanbuildinfo.cmake。对于Visual Studio而言,这意味着如果要从调试 <-> 版本切换,则应使用右键-s build_type发出新的conan工作区安装命令并进行干净的构建,为了获得正确的依赖关系。
柯南有cmake_multi生成器,它允许在集成开发环境中直接切换调试/发布配置。Conanfile.py配方他们已经定义了cmake生成器,所以第一步是在我们的conanws_vs.yml文件中覆盖它:
editables:
say/0.1@user/testing:
path: say
hello/0.1@user/testing:
path: hello
chat/0.1@user/testing:
path: chat
layout: layout_vs
generators: cmake_multi
workspace_generator: cmake
root: chat/0.1@user/testing
请注意生成器: cmake_multiline,它将定义要由我们的工作区包使用的生成器。另外,我们的CMakeLists.txt应该考虑到,现在我们将没有conanbuildinfo.cmake文件,而是conanbuildinfo_multi.cmake文件。例如,请参阅hello/src/CMakeLists.txt文件:
project(Hello)
if(EXISTS ${CMAKE_CURRENT_BINARY_DIR}/conanbuildinfo_multi.cmake)
include(${CMAKE_CURRENT_BINARY_DIR}/conanbuildinfo_multi.cmake)
else()
include(${CMAKE_CURRENT_BINARY_DIR}/conanbuildinfo.cmake)
endif()
conan_basic_setup(NO_OUTPUT_DIRS)
add_library(hello hello.cpp)
conan_target_link_libraries(hello)
最后一个conan_target_link_libraries(hello) 是一个帮助程序,它与调试/发布库进行正确的链接 (在使用cmake目标时也有效)。
如果以后要在IDE中切换它们,请确保直接安装调试和发布配置:
$ mkdir build && cd build
$ conan workspace install ../conanws_vs.yml
$ conan workspace install ../conanws_vs.yml -s build_type=Debug
$ cmake .. -G "Visual Studio 15 Win64"
您可以在项目文件夹中检查以下文件是如何生成的:
hello
|- build
| - conanbuildinfo_multi.cmake
| - conanbuildinfo_release.cmake
| - conanbuildinfo_debug.cmake
请注意,它们不在构建/发布和构建/调试子文件夹中; 这是因为多配置环境。为了说明布局vs将 [build_文件夹] 定义为不是build/{settings.build_type},而是如下所示:
[build_folder]
build