我有test.cpp和test.h文件。 在这些文件中,我需要进行条件编译。
#ifdef CPR
int iParameter=1;
#else
int iParameter=2;
#endif
从我调用编译时的shell脚本中,根据编译标志导出类似CPR_BUILD的内容。
export CPR_BUILD=y
在此文件夹的makefile中
ifeq ($(CPR_BUILD),y)
CXXFLAGS+=CPR
endif
这适用于.cpp文件。 但条件编译不适用于 moc_test.h.cpp 文件。
我想我需要在module_name.pro文件中执行一些操作才能使其可用于moc。但不确定如何。试过类似下面的东西,但是它不起作用。
CPR_BUILD {
DEFINES += CPR
}
答案 0 :(得分:0)
答案 1 :(得分:0)
我想出来了。很抱歉在此更新很长时间。
如果使用支持.pro文件的构建根或其他环境,则可以使用.pro文件。就我而言,它没有被使用。
这是一个简单的基于makefile的编译,其中使用了Qt。因此,“moc”{Qt的元对象编译器}开始出现。
正如我在问题中指出的那样, #ifdef CPR 从未奏效。这是moc正在处理头文件。即使makefile中存在“CFLAGS + = CPR”,也会出现此错误。
解决方案 从Makefile,我们调用moc并通过一点点重命名传递它的头文件。像这样的东西:moc_.cpp 错误是在调用moc时,CFLAGS没有传递给它。事实上,将完整的CFLAGS传递给moc是不合逻辑的,也是不必要的。因此,我因此在调用moc时只需传递-DCPR。