如何使用qmake与两个具有相同名称的源文件?

Bea*_*ear 16 qt qmake visual-c++

我的Qt项目有两个相同名称但在不同文件夹中的源文件.专业文件是:

SOURCES = A/Test.cpp 
SOURCES += B/Test.cpp
Run Code Online (Sandbox Code Playgroud)

它可以产生通过Qt的Visual Studio的插件Visual Studio解决方案文件,但它不会工作,因为生成的目标文件具有相同的名称:Test.obj.这将导致LNK2001未解析的外部符号,因为其中一个Test.obj被覆盖.

如何编写适当的专业文件来处理?

ale*_*sdm 15

您可以尝试将该行添加到.pro文件中:

CONFIG += object_with_source
Run Code Online (Sandbox Code Playgroud)

但正如选项名称所暗示的那样,.obj文件将不会在源外/"影子构建"目录中创建.

该选项已object_parallel_to_source在Qt 5中取代,它应该与阴影构建一起使用.

  • 注意:此功能已被删除,http://qt.gitorious.org/qt/qtbase/commit/a72420d012fd09f0a79ae75b77eb1c3bbff75669/diffs (2认同)

azf*_*azf 4

您应该考虑将解决方案拆分为多个项目,但这取决于每个文件夹是否可以代表一个项目。如果您选择此解决方案,则必须为每个项目编写一个 .pro 文件。通常的方法是编写一个“通用”*.pri 文件,该文件包含在每个 *.pro 文件中:

文件夹1.pro

TEMPLATE=lib
TARGET=folder1
include( ../common.pri )
Run Code Online (Sandbox Code Playgroud)

文件夹2.pro

TEMPLATE=lib
TARGET=folder2
include( ../common.pri )
Run Code Online (Sandbox Code Playgroud)

common.pri(在父目录中)

SOURCES += *.cpp
HEADERS += *.h
# etc.
Run Code Online (Sandbox Code Playgroud)

显然,每个 pro 文件的内容取决于您的解决方案。

如果您不想将源文件拆分为多个项目,我想更简单的解决方案是重命名冲突的文件。