cmake:从脚本中设置环境变量



我有一个脚本,可以设置交叉编译所需的所有变量。这只是其中的一部分:

export CONFIG_SITE=~/workspace/eldk-5.4/powerpc/site-config-powerpc-linux
export CC="powerpc-linux-gcc  -m32 -mhard-float --sysroot=~/workspace/eldk-5.4/powerpc/sysroots/powerpc-linux"
export CXX="powerpc-linux-g++  -m32 -mhard-float --sysroot=~/workspace/eldk-5.4/powerpc/sysroots/powerpc-linux"
export CPP="powerpc-linux-gcc -E  -m32 -mhard-float --sysroot=~/workspace/eldk-5.4/powerpc/sysroots/powerpc-linux"
export AS="powerpc-linux-as "
export LD="powerpc-linux-ld  --sysroot=~/workspace/eldk-5.4/powerpc/sysroots/powerpc-linux"
export GDB=powerpc-linux-gdb

如果我执行source environment-setup-powerpc-linux,那么所有环境变量都会导入到当前的shell会话中,并且我可以编译我的示例。

是否可以在cmake中导入这些变量?如果是,如何?


更多详细信息:

  1. 我使用的是ELDK v5.4,它的安装脚本生成了一个设置所有环境变量的脚本
  2. 我找到了这个教程,它解释了如何手动设置交叉编译,但没有解释如何使用脚本,因为脚本设置了所有内容
  3. 如果我在设置cmake之前调用脚本,一切都很好,我可以交叉编译,但我希望cmake调用脚本

阅读cmake快速启动,您可以在命令行上指定变量:

cmake -DVARIABLE1=value1 -DVARIABLE2=value2 ...

否则,cmake脚本中的set命令可能就是您想要的,请参阅参考手册。要设置环境变量路径,请执行:

set(ENV{PATH} "/home/martink")

要设置正常变量,请执行:

set(variable "value")

不确定你必须设置哪些,可能是环境因素。

也就是说,在调用cmake之前设置环境变量通常是解决问题的最简单解决方案。如果您想要一种不依赖于特定shell的语法来设置环境变量的跨平台方法,可以使用cmake -E env命令。

设置编译器和标志以可靠地使用CMake进行交叉编译的唯一方法是使用您在教程中找到的工具链文件。

当我们遇到与您相同的问题(一个生成脚本的工具包,因此设置编译环境)时,我们更改了工具包,使其在生成脚本的同时生成工具链文件。

事实上,cmake工具链文件不会经常更改。用于目标的基本标志通常在项目的早期就已修复。使用CMake的CMAKE_BUILD_TYPE,您可以在调试和发布编译之间切换,而无需更改工具链文件。

如果要支持不同的目标,请创建不同的工具链,并使用CMake进行源代码外构建。

EDIT:您可以做的一件事是用-D参数调用cmake,设置您想要的变量,并在以下时间之前获取脚本:

source environment-setup-powerpc-linux
cmake -DCMAKE_C_COMPILER=$CC -DCMAKE_CXX_COMPILER=$CXX etc

结果将与使用工具链文件相同。

相关内容

  • 没有找到相关文章

最新更新