Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在qmake中包含其他项目文件_C++_Qt_Qmake - Fatal编程技术网

C++ 在qmake中包含其他项目文件

C++ 在qmake中包含其他项目文件,c++,qt,qmake,C++,Qt,Qmake,我喜欢将Qt项目文件包含到另一个Qt项目中。 长话短说,我有一个生产项目和一个测试项目。它们彼此独立,以保持生产代码的整洁 我尝试过用通配符添加标题和源代码,但它不是递归的 SOURCES += path\to\production\*.cpp 之后,我编写了一个qmake逻辑来过滤文件 QT += core QT -= gui TARGET = qt_test CONFIG += console CONFIG -= app_bundle TEMPLATE = app SOURCES =

我喜欢将Qt项目文件包含到另一个Qt项目中。 长话短说,我有一个生产项目和一个测试项目。它们彼此独立,以保持生产代码的整洁

我尝试过用通配符添加标题和源代码,但它不是递归的

SOURCES += path\to\production\*.cpp
之后,我编写了一个qmake逻辑来过滤文件

QT += core
QT -= gui

TARGET = qt_test
CONFIG += console
CONFIG -= app_bundle

TEMPLATE = app

SOURCES = main.cpp

message("Fetching production code")

win32:PRODUCION_FILES = $$system(dir path\to\production /s /b)

for(a, PRODUCION_FILES) {

    IS_HEADER = $$find( a, .h$ )
    count( IS_HEADER, 1 ) {
        HEADERS += $$a
    }

    IS_CPP = $$find( a, .cpp$ )
    count( IS_CPP, 1 ) {
        SOURCES += $${a}
    }

    IS_FORM = $$find( a, .ui$ )
    count( IS_FORM, 1 ) {
        FORMS += $${a}
    }
}
message("Production code fetched!")
message(Headers: $$HEADERS)
message(Sources: $$SOURCES)
message(Forms: $$FORMS)
编译.pro文件时,消息看起来很好:

Project MESSAGE: Fetching production code
Project MESSAGE: Production code fetched!
Project MESSAGE: Headers: path\to\production\mainwindow.h
Project MESSAGE: Sources: main.cpp path\to\production\main.cpp path\to\production\mainwindow.cpp
Project MESSAGE: Forms: path\to\production\mainwindow.ui
但不知何故,当我在QtCreator中查看Projects选项卡时,我会看到各种各样的文件,例如在Headers部分(比如cpp和ui,甚至是pro)

我错过了什么

我在QtCreator 3.5中的Win7系统上使用使用mingw4.9.2 64位编译的Qt 5.4.1

我感谢你的建议和帮助

谢谢,
spiralfuset

添加头文件和其他文件的方式不同,即
头文件+=$$a
源文件+=$${a}
。这是故意的吗?没有,但没有区别“$$VAR=>QMake运行时QMake变量的值$${VAR}=>QMake运行时QMake变量的值(相同但封闭以与周围文本分开)$(VAR)=>运行Makefile(非QMake)时环境变量的内容$$(VAR)=>运行qmake(而不是Makefile)时环境变量的内容”(从)您始终可以创建另一个包含所有公共内容的文件,并包含该文件。是的,但我不想手动添加任何内容。当我创建一个新类或文件时,它会自动添加到production.pro文件中。我不想手动添加到另一个文件。添加头文件和其他文件的方式不同,即,
HEADERS+=$$a
SOURCES+=$${a}
。这是故意的吗?没有,但没有区别“$$VAR=>QMake运行时QMake变量的值$${VAR}=>QMake运行时QMake变量的值(相同但封闭以与周围文本分开)$(VAR)=>运行Makefile(非QMake)时环境变量的内容$$(VAR)=>运行qmake(而不是Makefile)时环境变量的内容”(从)您始终可以创建另一个包含所有公共内容的文件,并包含该文件。是的,但我不想手动添加任何内容。当我创建一个新类或文件时,它会自动添加到production.pro文件中。我不想手动添加到另一个文件中。