【发布时间】:2021-02-10 05:47:22
【问题描述】:
我一直在为个人项目学习柯南,但我有一个问题无法通过查看文档和示例来回答。
柯南的“个人资料”和 CMake 之间似乎存在尴尬的缺乏互动。我的意思是:有许多不同的构建参数必须手动保持同步 - 使用与 conan install 期间选择的参数不同的参数运行 CMake 将导致构建错误。
举一个更具体的例子,这是我的两个配置以及我将如何使用它们来构建:
$ cat ~/.conan/profiles/gcc_debug
[settings]
os=Linux
os_build=Linux
arch=x86_64
arch_build=x86_64
compiler=gcc
compiler.version=10
compiler.libcxx=libstdc++11
build_type=Debug
[options]
[build_requires]
[env]
$ export CC=/usr/bin/gcc
$ export CXX=/usr/bin/g++
$ conan install ../src --profile gcc_debug
$ cmake ../src -GNinja -DCMAKE_BUILD_TYPE=Debug
$ cmake --build .
$ cat ~/.conan/profiles/clang_cl_release
[settings]
os=Windows
os_build=Windows
arch=x86_64
arch_build=x86_64
compiler=Visual Studio
compiler.version=16
compiler.toolset=ClangCL
build_type=Release
[options]
[build_requires]
[env]
$ conan install ../src --profile clang_cl_release
$ cmake ../src -G"Visual Studio 16 2019" -TClangCL
$ cmake --build . --config=Release
在第一个示例中,我必须重复 gcc 和 Debug。
在第二个中,我必须重复Visual Studio、16、ClangCL 和Release。
不得不重复自己这么多次感觉很糟糕,尤其是当这些选项分布在多个长时间运行的命令中时,并且忘记一个选项可能会导致不明显的错误消息。对我来说,当您调用 cmake_basic_setup() 时,柯南不仅仅强制(覆盖)适当的 CMake 变量,这对我来说也很奇怪;它已经知道它所期望的值,如果它们不匹配就会爆炸。
推荐的处理方法是什么?
【问题讨论】: