bash – 重新定义变量的makefile中的条件?
发布时间:2020-12-16 01:57:22 所属栏目:安全 来源:网络整理
导读:我的makefile中有一个变量我想要取消设置或重新定义,因此目标a,b和c在各自的makefile中使用正确的MY_VARIABLE值(或者根本没有). 如果我使用以下命令运行make foo: export MY_VARIABLE := 'false'foo: prep_foo distprep_foo: $(shell export MY_VARIABLE='t
我的makefile中有一个变量我想要取消设置或重新定义,因此目标a,b和c在各自的makefile中使用正确的MY_VARIABLE值(或者根本没有).
如果我使用以下命令运行make foo: export MY_VARIABLE := 'false' foo: prep_foo dist prep_foo: $(shell export MY_VARIABLE='true') echo ${MY_VARIABLE} dist: a b c a: make -C a/src b: make -C b/src c: make -C c/src 我得到这个输出: export MY_VARIABLE='true' echo 'false' false ... 相反,如果我使用以下makefile运行make foo: export MY_VARIABLE := 'false' foo: prep_foo dist prep_foo: $(shell unset MY_VARIABLE) echo ${MY_VARIABLE} dist: a b c a: make -C a/src b: make -C b/src c: make -C c/src 我得到以下输出: make: unset: No such file or directory echo 'false' false ... 在指定目标时如何取消设置或重新定义MY_VARIABLE(在这种情况下,如foo)? 编辑 这是我想避免的情况: dist: a b c foo: a_foo b_foo c_foo a: make -C a/src ... a_foo make -C a_foo/src 我只是希望目标为我的特定变量使用不同的值,以便在该目标的makefile中以不同方式处理编译. 此外,它看起来不像我可以导出或取消设置目标中的变量.例如: dist: a b c foo: a_foo b_foo c_foo a: make -C a/src ... a_foo: export MY_VARIABLE='true'; make -C a/src 如果我尝试这样做,我会在导出MY_VARIABLE =’true’行上得到类似于以下错误的内容(同样如果我尝试使用unset): Makefile:16: *** unterminated variable reference. Stop. 这有助于澄清我正在尝试做什么吗? 编辑2 我尝试了一个触摸文件的目标,并尝试运行子目标的makefile(检查文件是否存在): foo: prep_foo prep_foo: touch a/src/.foo make -C a/src 当我尝试通过make foo运行时,我收到以下错误: Makefile:14: *** commands commence before first target. Stop. 如果我从prep_foo中删除make语句,那么我可以触摸该文件而不会收到错误消息,但我无法触发创建目标,所以这似乎没有帮助. 以下产生在第一个目标错误消息之前开始的相同命令: foo: prep_foo a prep_foo: touch a/src/.foo 是否有使用触摸来传达状态到子目标的示例? 解决方法
Makefile中目标之间通信的常用方法是通过文件.只需触摸一个目标中的文件,然后在另一个目标中进行检查.这可以帮助您解决问题吗?
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |