【发布时间】:2018-12-29 12:11:20
【问题描述】:
对于 C 库,由于内存问题,我需要检查当前编译器是否适用于 x86_64。我发现的命令完全符合我的要求:
CXXARCH:=$(${CXX} -dumpmachine | grep -i 'x86_64')
其中${CXX} 是gcc 或clang。对于x86_64 机器,这将返回一个非空字符串。对于 32 位机器,比如 Raspberry Pi,这将为空。
如何区分这两种情况?
我这样做了:
ifneq (${CXXARCH},)
MAGICVAR:=-DMY_DEFINE
endif
使用 $(info) 打印,我确保在 Raspberry Pi 中,这个条件没有被满足,它应该满足,因为命令 clang-6.0 -dumpmachine 返回:armv7l-unknown-linux-gnueabihf。那么为什么这个条件没有被执行呢?我做错了什么?
【问题讨论】:
-
这不是 Makefile 而是 shell 语法!见
$(shell ) -
@AnttiHaapala 抱歉,我对普通的 makefile 细微差别不太熟悉,因为我通常处理 cmake。此语法适用于我正在使用的 make 文件中的其他内容(不是我自己创建的)。
-
它很可能在执行部分中。在任何情况下,这都会总是导致一个空字符串被分配给 CXXARCH。
-
@AnttiHaapala 实际上在
shell之前添加${CXX}并不能正常工作。 -
当然不是。看我的回答
标签: c linux bash makefile gnu-make