如何从 .pro 文件的列表中删除某些文件?
How to remove certain file from a list in .pro file?
在编译项目1时,包括main.o
在内的一堆目标文件被放入build文件夹。
现在我喜欢在项目 2 中像使用库一样使用这些目标文件,所以您可以通过[=17= 将所有文件手动添加到 LIBS 分配中]
//project2.pro
LIBS += $$buildfolderProject1/compressedair.o \
$$buildfolderProject1/connectca.o \
$$buildfolderProject1/controlpanelca.o \
$$buildfolderProject1/compressedair.o \
$$buildfolderProject1/moc_compressedair.o \
$$buildfolderProject1/moc_controlpanelca.o \
$$buildfolderProject1/moc_screenca.o \
$$buildfolderProject1/qrc_resources.o \
$$buildfolderProject1/screenca.o
更方便的方法是这样的:
//project2.pro
LIBS += $$buildfolderProject1/*.o
但是由于buildfolderProject1也包含Project1的main.o
编译时出现错误(main的多重定义)。
所以我尝试使用以下方法删除 main.o
:
LIBS -= $$buildfolderProject1/main.o
但这不适用于 LIBS += $$buildfolderProject1/*.o
方法。
有一种方法可以从列表中删除某个文件。解释:
不工作:
//project2.pro
LIBS += $$buildfolderProject1/*.o
LIBS -= LIBS -= $$buildfolderProject1/main.o
工作:
//project2.pro
myObjectFileList = $$files($$buildfolderProject1/*.o)
myObjectFileList-= $$buildfolderProject1/main.o
LIBS += myObjectFileList
我完全不明白,但不知何故,$$files returns 一个可编辑的文件列表,可以在 .pro 文件中编辑。
并且在 NOT WORKING 中代码编译出错,因为 qmake 直接提取所有 .o 文件而无法编辑列表。
在qmake文档中我发现qmake内置的$$files函数是一个替换函数。
在编译项目1时,包括main.o
在内的一堆目标文件被放入build文件夹。
现在我喜欢在项目 2 中像使用库一样使用这些目标文件,所以您可以通过[=17= 将所有文件手动添加到 LIBS 分配中]
//project2.pro
LIBS += $$buildfolderProject1/compressedair.o \
$$buildfolderProject1/connectca.o \
$$buildfolderProject1/controlpanelca.o \
$$buildfolderProject1/compressedair.o \
$$buildfolderProject1/moc_compressedair.o \
$$buildfolderProject1/moc_controlpanelca.o \
$$buildfolderProject1/moc_screenca.o \
$$buildfolderProject1/qrc_resources.o \
$$buildfolderProject1/screenca.o
更方便的方法是这样的:
//project2.pro
LIBS += $$buildfolderProject1/*.o
但是由于buildfolderProject1也包含Project1的main.o
编译时出现错误(main的多重定义)。
所以我尝试使用以下方法删除 main.o
:
LIBS -= $$buildfolderProject1/main.o
但这不适用于 LIBS += $$buildfolderProject1/*.o
方法。
有一种方法可以从列表中删除某个文件。解释:
不工作:
//project2.pro
LIBS += $$buildfolderProject1/*.o
LIBS -= LIBS -= $$buildfolderProject1/main.o
工作:
//project2.pro
myObjectFileList = $$files($$buildfolderProject1/*.o)
myObjectFileList-= $$buildfolderProject1/main.o
LIBS += myObjectFileList
我完全不明白,但不知何故,$$files returns 一个可编辑的文件列表,可以在 .pro 文件中编辑。 并且在 NOT WORKING 中代码编译出错,因为 qmake 直接提取所有 .o 文件而无法编辑列表。
在qmake文档中我发现qmake内置的$$files函数是一个替换函数。