我有一个脚本来设置交叉编译所需的所有variables。 这只是其中的一部分:
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
,所有的环境variables都被导入到当前的shell会话中,我可以编译我的例子。
是否有可能在cmake中导入这些variables? 如果是的话,怎么样?
更多的细节:
通过cmake快速入门读取,您可以在命令行中指定变量:
cmake -DVARIABLE1=value1 -DVARIABLE2=value2 ...
否则,在cmake脚本中set
命令可能是你想要的,参见参考手册 。 要设置环境变量 PATH,请执行以下操作:
set(ENV{PATH} "/home/martink")
要设置正常变量,请执行:
set(variable "value")
不知道你必须设置哪些,可能是环境的。
也就是说, 在调用cmake之前设置环境变量通常是解决问题的最简单的解决方案,例如: https : //stackoverflow.com/a/15053460/684229
设置一个编译器和标志与CMake进行可靠的交叉编译的唯一方法是使用一个工具链文件,就像在你找到的教程中所做的那样。
当我们遇到同样的问题(一个产生脚本的工具包,以便设置编译环境)时,我们改变了工具包,使得它与脚本一起产生一个工具链文件。
实际上cmake工具链文件不会经常改变。 通常用于目标的基本标志在项目中很早就已经确定。 使用CMake的CMAKE_BUILD_TYPE
您可以在调试和发布编译之间进行切换,而无需更改工具链文件。
如果您有不同的支持目标,请创建不同的工具链,并使用CMake的源代码构建。
编辑 :你可以做的一件事是用-D参数调用cmake设置你想要的变量,并已经从你的脚本:
source environment-setup-powerpc-linux cmake -DCMAKE_C_COMPILER=$CC -DCMAKE_CXX_COMPILER=$CXX etc
结果将与使用工具链文件相同。