2011-02-08 127 views
2

我在debian和ubuntu上交替开发我的C++应用程序,并且informix数据库的库根目录在两个发行版上都不相同。如果路径存在,则在Makefile中分配路径变量

什么是在Makefile中处理它的好方法,所以我不必每次都手动更改它? 我以为只是测试目录的存在,所以它更一般,然后检查uname或lsb-release或主机名。

如何在条件中分配语法?我得到尝试#2

// prepare 
INFORMIXDIR_DEB=/usr/informix 
INFORMIXDIR_UBU=/opt/IBM/informix 

// tried #1 
$(INFORMIXDIR_DEB): 
     if [ -d $(INFORMIXDIR_DEB) ]; then INFORMIXDIR=$INFORMIXDIR_DEB; fi; 

// tried #2 
$(INFORMIXDIR_DEB): 
     INFORMIXDIR=$(INFORMIXDIR_DEB) 

// tried #3 
if [ -d $(INFORMIXDIR_UBU) ] ; 
    then INFORMIXDIR=$INFORMIXDIR_UBU; 
fi; 

回答

3

“丢失分隔符”错误,但如果你使用了GNU make,你可以编写shell命令来测试任何你想要的,结果赋值给变量,并与ifeq玩?

+0

更准确:“将结果赋值给变量”?如何在测试条件之后编写? – groovehunter

+0

@groovehunter:$(shell)的东西。查看gmake手册获取完整的信息。我的意思是像完整的逻辑交给shell:$(shell test -d blabla && echo blablaexists)。 – 2011-02-08 11:08:37

+1

好吧,现在我明白了。 'INFORMIXDIR = $(shell test -d/opt/IBM/informix && echo/opt/IBM/informix)' “shell”之前没有空格! :) – groovehunter