【发布时间】:2013-03-08 09:57:19
【问题描述】:
我正在使用 makefile 来编译 MATLAB/C 项目。 MATLAB 通常可以安装到多个标准位置,具体取决于其版本,例如/Applications/MATLAB_2012b.app、/Applications/MATLAB_2013a.app等
查看这些路径是否存在的最简单方法是什么,一个接一个,然后取第一个找到的路径?我至少要测试五个值。我找到了$(wildcard filename) 语法,但我想知道是否有什么比一一写出更短的方法。
根据要求进行澄清。我可以拼凑一些有用的东西,但我确信这远非最好/最简洁的方式。有没有更好的办法?
ifeq ($(MATLAB),)
ifneq ($(wildcard /Applications/MATLAB_2011b.app),)
MATLAB = /Applications/MATLAB_2011b.app
endif
endif
ifeq ($(MATLAB),)
ifneq ($(wildcard /Applications/MATLAB_2012a.app),)
MATLAB = /Applications/MATLAB_2012a.app
endif
endif
ifeq ($(MATLAB),)
ifneq ($(wildcard /Applications/MATLAB_2012b.app),)
MATLAB = /Applications/MATLAB_2012b.app
endif
endif
ifeq ($(MATLAB),)
ifneq ($(wildcard /Applications/MATLAB_2013a.app),)
MATLAB = /Applications/MATLAB_2013a.app
endif
endif
【问题讨论】:
-
这还不清楚。
$(wildcard /Applications/MATLAB_*.app怎么了? -
@Beta 请查看编辑
-
太糟糕了,这个问题限制了 MATLAB_* 模式的路径。
-
@techtonik 你的意思是什么?答案很笼统。
-
接受的答案假定路径具有公共组件,这在一般情况下是不正确的。
标签: makefile