因此,要编译我的可执行文件,我需要正确设置库位置.问题是,设置来自一堆执行env变量导出的脚本,需要设置的内容可能会发生变化(超出我的控制范围),所以我需要使用这些脚本而不是复制它们的功能.要在常规命令行中编译,我需要执行以下操作:
setup library1
setup library2
source some_other_setup_script.bash
g++ blah.c
# setup is a executable on my system that run some scripts
Run Code Online (Sandbox Code Playgroud)
我怎么写一个完成它的makefile?据我所知,env变量导出不会结转(即"export VAR = remember; echo $ VAR"不起作用)
Dav*_*ark 11
您还可以使用GNU make的机制正确添加环境变量,如下所示:
export TEST:="Something Good!"
test:
echo $$TEST
Run Code Online (Sandbox Code Playgroud)
这(我认为)有不同的语义:
TEST2:="Something not quite so useful?"
test2:
echo ${TEST2}
Run Code Online (Sandbox Code Playgroud)
(再次,我认为)在传递给shell之前在make中进行替换.请注意,export命令在目标块中不起作用,只是作为立即执行的命令缩进.
如果变量导出不像命令行那样工作,那表明Make正在选择一个与您正在使用的shell不同的shell,使用不同的语法处理变量(export VAR=remember; echo $VAR对我来说很好).请使用/bin/sh默认,但你可以用SHELL变量,这使得不重写此不从环境中导入.我建议将SHELL(在Makefile中)设置为您在环境中使用的任何内容并export VAR=remember再次尝试实验.
| 归档时间: |
|
| 查看次数: |
22987 次 |
| 最近记录: |