1

我读到编译器应该在调用柯南的构建命令时指定,或者在[settings]配置文件的部分。

但是,我正在使用 Cmake 进行构建,并且已经使用CMAKE_TOOLCHAIN_FILE. 我发现我可以在[env]配置文件的部分中使用 进行设置CONAN_CMAKE_TOOLCHAIN_FILE,但在settings.

现在我对指定编译器的可能性感到困惑,该编译器与CONAN_CMAKE_TOOLCHAIN_FILE.

在这种情况下指定编译器的正确方法是什么?

用 替换标准设置部分是否安全CONAN_CMAKE_TOOLCHAIN_FILE

即在conanfile.py中:
settings = "CONAN_CMAKE_TOOLCHAIN_FILE"

(另外,为什么没有在 中指定源settings?这肯定是影响输出二进制文件的最常见更改吗?)

4

1 回答 1

2

CONAN_CMAKE_TOOLCHAIN_FILE它只是一个与 CMake 相关的环境变量,而不是一个设置本身。

在这种情况下指定编译器的正确方法是什么?

在交叉编译时,您需要像往常一样配置您的设置。最好的想法是为此创建一个新的配置文件。例如:

[settings]
arch=armv7hf
build_type=Release
compiler=gcc
compiler.libcxx=libstdc++
compiler.version=7
os=Linux
[env]
CONAN_CMAKE_TOOLCHAIN_FILE=/opt/cmake/Toolchain-armhf.cmake

配置文件可以直接在 ${CONAN_USER_HOME}/profiles 或运行conan profile命令中

用 CONAN_CMAKE_TOOLCHAIN_FILE 替换标准设置部分是否安全?

不!Settings 是一组属性,它们是包 ID 的一部分。如果你改变它,柯南会抱怨一个无效的新属性,因为默认情况下只接受一些属性。

问候!

于 2019-02-07T13:34:13.527 回答