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