Qt Creator 项目和库的统包分发?
Posted
技术标签:
【中文标题】Qt Creator 项目和库的统包分发?【英文标题】:Turnkey distribution of Qt Creator Projects and Libraries? 【发布时间】:2012-06-13 01:54:32 【问题描述】:我正在尝试建立一组 Qt Creator 项目,并在它们之间共享几个自定义库。所有这些都使用 C++11 和 Boost,并在 Git 存储库中进行管理。
目前我正在使用 CMake 和符号链接。所以现有的目录结构大致如下:
projects/
libraryOne/
include/
libraryOne/ ; Parent in -I paths, then #include "libraryOne/foo.h"
src/
libraryTwo/
include/
libraryTwo/
src/
libraryOne/ ; symbolic link
libraryThree/
include/
libraryThree/
src/
libraryTwo/ ; symbolic link
applicationOne/
CMakeLists.txt
libraryOne/ ; symbolic link
libraryTwo/ ; symbolic link
libraryThree/ ; symbolic link
build/
applicationTwo/
CMakeLists.txt
libraryOne/ ; symbolic link
libraryTwo/ ; symbolic link
libraryThree/ ; symbolic link
build/
applicationThree/
CMakeLists.txt
libraryOne/ ; symbolic link
libraryTwo/ ; symbolic link
libraryThree/ ; symbolic link
build/
要构建一个给定的应用程序,我进入该应用程序的build/
子目录并运行cmake ..
,这样它将从CMakeLists.txt
生成makefile(因此它将把所有中介和构建产品放在build/
下)。然后我运行make
。
这就是这种特殊设置的演变方式,而且相当笨拙。我想删除 CMake 依赖项,并使其对拥有 Qt Creator 的人来说变得微不足道,git clone
我的个人源存储库,一个或多个应用程序,加载 .pro 文件,然后按 Build 并让它工作。
其他愿望:
无需创建符号链接 应该可以在 GUI 中添加和删除文件,而无需编辑生成文件 将应用程序加载到编辑器中应该使库也可以编辑,并且应该自动处理构建依赖项 在调试模式下,您应该能够在任何库中设置断点,并且环境可以在其上停止 将目标文件和可执行文件放在不是源代码子目录的目录中我想知道是否有类似这样的“干净”示例...在 Qt Creator 世界中是否有任何好的示例可以效仿?雄心勃勃地期望.pro
文件能够跨平台自动处理这种事情?
【问题讨论】:
【参考方案1】:.pro 文件实际上会为您处理。我已经回答了怎么做in another question。
【讨论】:
+1 链接。您的示例不是我正在寻找的,因为您将库放在应用程序项目中,并且我有多个应用程序共享的库。 :-/ Qt Creator 的默认设置对我不起作用,尤其是在像[libname]-build-desktop-Desktop_Qt_4_8_1_for_GCC__Qt_SDK__Release/
这样的可怕命名目录中并排构建库!
你没试过吧?该回复中有三个项目:***项目、库项目和应用程序项目。后两者是分开的。***项目是为了方便:构建它将构建库,最后是应用程序。这正是您要寻找的。span>
澄清一下:我的意思是我会有几个使用相同库的“***”应用程序项目,所以我不能将库作为“***”应用程序的子目录。我已经更新了我的问题,以便更清楚地了解我试图处理的情况的细节。如果您认为您可以根据这种情况调整您的答案,那将非常有帮助!
那些子目录不一定是物理子目录。它们可以在您想要的任何地方。查看 qmake 文档以获取信息。
您通常会将***项目(可能有很多)放在存储库的根文件夹中。那将是您问题中的projects/
文件夹。它们只是方便的.pro
文件,用于构建应用程序子项目及其依赖项。它们类似于 Visual Studio 中的解决方案文件。以上是关于Qt Creator 项目和库的统包分发?的主要内容,如果未能解决你的问题,请参考以下文章
在 Qt Creator (Windows) 中构建 Qt 库的问题
qt creator配置qt version:从别处拷贝来的qt库时遇到的问题