使用 QMake 如何为每个 main() 构建一个项目

Using QMake how can I build a project once for each main()

所以,我开始使用带有 Qt 的 catch 进行单元测试(纯 C++,但使用带有 .pro 文件的 qmake)。

这是一个包含以下文件的小项目:

DatagramSocket.cpp/h
main.cpp                     - this contains a main() function

而且对于单元测试它还有文件:

catch.hpp
unittestdatagramsocket.cpp   - this contains a main() function

在我的 .pro 文件中,我可以像这样正常构建项目:

TEMPLATE = app
CONFIG += console c++11
CONFIG -= app_bundle
CONFIG -= qt
# TARGET = unittest-UDPDatagram
TARGET = UDPDatagram

SOURCES += \
    main.cpp \
    DatagramSocket.cpp \
    # unittestdatagramsocket.cpp


HEADERS += \
    DatagramSocket.h \
    catch.hpp

LIBS += \
    -lwsock32
    -lws2_32

然后我可以 运行 UDPDatagram.exe - 它有效。

或者我可以像这样为单元测试构建它:

TEMPLATE = app
CONFIG += console c++11
CONFIG -= app_bundle
CONFIG -= qt
TARGET = unittest-UDPDatagram
# TARGET = UDPDatagram

SOURCES += \
    # main.cpp \
    DatagramSocket.cpp \
    unittestdatagramsocket.cpp


HEADERS += \
    DatagramSocket.h \
    catch.hpp

LIBS += \
    -lwsock32
    -lws2_32

然后我可以 运行 unittest-UDPDatagram.exe - 它有效。

我想做的是构建(无论是调试还是发布)每次都构建。这可能吗?

不,每个 .pro 文件仅用于一个可执行文件或库。但是您可以将共享的内容放在一个单独的 .pro 文件中,并从两个 .pro 文件中包含它,每个文件用于一个程序。