与CMake和工具链文件交叉编译时的Conanfile设置

时间:2018-10-10 02:12:45

标签: cmake conan

我了解到,在调用柯南的build命令时,或在配置文件的[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中指定来源?这肯定是最常见的会影响输出二进制文件的更改吗?)

1 个答案:

答案 0 :(得分:0)

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替换标准设置部分是否安全?

不!设置是一组属性,它们是软件包ID的一部分。如果您更改此设置,由于默认情况下仅接受某些属性,因此柯南将通过无效的新属性对其进行投诉。

致谢!