在我们的项目中,如果定义了宏,我们添加了一些源文件和头文件。我们在 .pro 文件中这样做:
contains(DEFINES, MY_DEF) {
message("Support MY_DEF")
INCLUDEPATH += \
my_include_dir
SOURCES += \
source1.cpp \
source2.cpp
HEADERS += \
my_include_dir/header1.h \
my_include_dir/header2.h
FORMS += \
myform.ui
}
这在构建过程中工作得很好。如果未定义 MY_DEF,则不会编译这些文件。 MY_DEF 的定义如下:
DEFINES += MY_DEF
奇怪的是,Qt Creator 总是在项目树中显示文件,而无论 MY_DEF 是否已定义。如果没有定义,它们不会用于构建,但它们仍然显示和可编辑,搜索可以扫描它们,等等...这是 Qt Creator 的错误吗?
这不是一个大问题,只是有点烦人,因为我们不清楚文件是否是项目的一部分。
最佳答案
这甚至是故意的。有一种特殊的“累积”解析模式来收集 .pro 文件中提到的所有文件(本质上与用于收集“可翻译字符串”的文件相同)以在项目树中显示。否则,像“替换项目中的所有文件”这样的事情会根据平台或运行的上下文产生不同的结果。[并且它不是包含的 qmake 的一半,但接近全部......]
关于Qt Creator 和条件构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11782060/