Qt 如何在内置qmake子文件夹模板后安装第一个项目?

Qt 如何在内置qmake子文件夹模板后安装第一个项目?,qt,qt-creator,qmake,Qt,Qt Creator,Qmake,我有一个带有子文件夹模板的qtcreator项目。文件夹如下所示: mainProject/ mainProject.pro staticLib/ (bunch of .cpp and .h files) staticLib.pro testApp/ main.cpp testApp.pro 以及mainProject.pro文件: TEMPLATE = subdirs CONFIG += ordered SUBDIRS =

我有一个带有子文件夹模板的qtcreator项目。文件夹如下所示:

mainProject/
   mainProject.pro
   staticLib/
      (bunch of .cpp and .h files)
      staticLib.pro
   testApp/
      main.cpp
      testApp.pro
以及mainProject.pro文件:

TEMPLATE = subdirs
CONFIG += ordered

SUBDIRS = staticLib \
          testApp

testApp.depends = staticLib
headersDataFiles.path = $$LIBPATH/include
headersDataFiles.files = $$PWD/*.h
INSTALLS += headersDataFiles

libraryFiles.path = $$LIBPATH/lib
Debug:libraryFiles.files = $$OUT_PWD/debug/*.a
Release:libraryFiles.files = $$OUT_PWD/release/*.a
INSTALLS += libraryFiles
我想安装静态库,因此在staticLib.pro文件中添加了安装选项:

TEMPLATE = subdirs
CONFIG += ordered

SUBDIRS = staticLib \
          testApp

testApp.depends = staticLib
headersDataFiles.path = $$LIBPATH/include
headersDataFiles.files = $$PWD/*.h
INSTALLS += headersDataFiles

libraryFiles.path = $$LIBPATH/lib
Debug:libraryFiles.files = $$OUT_PWD/debug/*.a
Release:libraryFiles.files = $$OUT_PWD/release/*.a
INSTALLS += libraryFiles
问题是,当我在Qtcreator中构建项目时,它先构建静态库,然后构建应用程序,而不首先运行makeinstall,因此应用程序的构建失败。Qtcreator只允许我在qmake_all之后添加构建步骤(在不首先安装lib的情况下构建两个项目)

所以问题是,我有没有办法构建staticLib项目,安装它,然后构建testApp


编辑:testApp项目始终可以从第一个项目的输出目录链接到库。但是我想将.a和headers文件移动到其他文件夹中,以保持项目的组织。testApp构建失败这不是问题所在。很抱歉被误解。

我不喜欢在Qt creator中添加步骤的想法(当然,如果这不是唯一的方法的话),因为它们在不同的开发环境中并不持久。例如,每次从另一台机器上的存储库下载/克隆代码时,都需要在Qt Creator中添加此步骤

我们在Windows上执行此操作的方式(但是,它也适用于其他平台)是通过和$$QMAKE_COPY(预定义QMAKE跨平台复制命令):

UPD:如果在一个目录中有所有需要的头,可以使用QMAKE\u COPY\u DIR而不是QMAKE\u COPY


此外,如果您计划在一个特定的平台上构建它,您可以省略$$shel_quote/$$shell_路径,只需编写正确的路径。

或者如果您需要安装,您可以添加

QMAKE_POST_LINK=$(MAKE) install

安装到您的.pro文件

不需要编译依赖于静态libs的内容。您的testApp.pro中似乎存在配置错误-请您也分享一下好吗?您是否尝试通过Qt Creator将静态库添加到testApp?是的,您是对的,不需要安装。实际上,我不想在系统中安装,只需将生成的.a和标题移动到项目中的其他文件夹,以保持项目的组织。谢谢你的评论,很抱歉被误解了,我编辑了这个问题。
QMAKE_POST_LINK=$(MAKE) install