在 Makefile 中,如果路径存在,则分配路径变量相关

发布于 2024-10-16 12:30:43 字数 586 浏览 2 评论 0原文

我在 debian 和 ubuntu 上交替开发我的 C++ 应用程序,并且 informix 数据库的库根目录在两个发行版上都不同。

在 Makefile 中处理它的好方法是什么,这样我就不必每次都手动更改它? 我想只测试目录是否存在,这样它比检查 uname 或 lsb-release 或主机名更通用。

条件赋值的语法是怎样的?我在 try#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;

I develop my c++ app alternately on debian and ubuntu and the library root dir of informix database is different on both distributions.

What's a nice way of handling it in Makefile so i don't have to change it manually each time?
I thought of just testing on existance of the directory so it's more general then checking uname or lsb-release or hostname.

And how is the syntax for assigning in a condition? I get the "missing seperator" error on try#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;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

娇纵 2024-10-23 12:30:43

但是如果您使用 gnu make,您可以编写 shell 命令来测试您想要的任何内容,将结果分配给变量并使用 ifeq

But if you use gnu make, you can write shell command to test whatever you want, assign the result to the variable and play with ifeq?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文