包含预处理器定义的文件



我想包含一个文件并使用预处理器定义作为路径。

// in projects preprocessor definitions:    
HEADER="../somePath/theHeader.h"
// in a file
#include HEADER

这在Windows上有效,但XCode对此表示不满,无法找到该文件。用路径替换HEADER是可行的,因此该文件确实存在。那么,我错过了什么?

我错过了什么?

也许有足够多的引号。在Unix上,您需要:

HEADER = "../somePath/theHeader.h"
${CC} ${CFLAGS} -DHEADER='${HEADER}' -c file.cpp

宏定义包含双引号。如果不将-DHEADER参数用单引号括起来,那么shell(un)会很有帮助地去掉双引号。通过将其放在单引号中,shell可以帮助删除单引号,将双引号留给编译器查看。

Windows上的命令行处理规则不同,cmd.exe处理器对引号的处理方式也不同。

顺便说一句,当我想让人在命令行上指定HEADER的值时,我使用:

HEADER = ../somePath/theHeader.h
${CC} ${CFLAGS} -DHEADER='"${HEADER}"' -c file.cpp

现在我可以运行:

make HEADER=/other/path/to/header.h file.o

它是有效的。用最初的符号,我必须写:

make HEADER='"/other/path/to/header.h"' file.o

或者类似的东西,如果你想使用命令输出来指定文件名,这会更麻烦,而且会加倍尴尬。将第一个选项与第二个选项进行比较:

make HEADER=$(locate header.h)
make HEADER=""$(locate header.h)""

相关内容

  • 没有找到相关文章

最新更新