qmake:将单个cpp文件编译成可执行文件

qmake: compile single cpp file into an executable

我在 QT 中有一个项目,我想使用 qmake 编译一个额外的 cpp 文件,该文件(到独立的可执行文件中)没有以任何方式连接到我的应用程序甚至 QT(它是非常简单的纯 C++ 程序) ).有没有办法在不重建整个项目结构的情况下做到这一点?我是否需要为每个可执行文件单独的 .pro 文件,或者是否有任何其他方法可以简单地只编译一个普通的 C++ 文件?

如您所知,qmake -project 将生成一个 .pro 文件,其名称与包含整个源和 header 文件的文件夹名称相同,如果您 qmake 这个 pro 文件,则 make 你的项目你将从你的新 cpp 文件获得编译的 .o 文件,即使它没有直接连接到你的 Qt 项目。

但是如果这个文件有 main() 函数,编译器当然会出现多个 main() 定义错误。

您当然需要重建该文件

如您所知,对于仅一个标准纯 C++ 文件的简单编译,您只需

g++ source.cpp -o excutable_name.exe

更严格的两步编译:

g++ -Wall -pedantic -ansi source.cpp -c compiled_file_name.o
g++  compiled_file_name -o excutable_name.exe

但是如果您打算使用与 Qt 相关的代码,则必须包含 Qt headers 和 link 必要的库:

g++ -Wall source.cpp -c compiled_file_name.o -L qt/library/path -lQtGui -lQtCore  -lQtother_necessary_libraries -I Qt/include/path -I Qtother_necessary_include_paths

要制作额外的可执行文件,您可以在 .pro 中使用 system(),如下所示:

system(g++ otherapp.cpp)

每次调用 qmake 时都会构建。但是,如果您想在源更改时自动构建附加应用程序,请改用 QMAKE_EXTRA_TARGETS