如何在Qt Creator中管理多个项目?

5
我有一个exe文件,它依赖于多个静态库。在Visual Studio中,它们都作为一个sln文件的一部分进行管理,而exe文件则依赖于这些静态库。
在Qt Creator中如何设置呢?似乎有两个选项: 1. 在Qt Creator“会话”中创建多个项目。但是会话不是共享的,对吗?所以我不确定这将如何工作?例如,是否会创建会话文件? 2. 使用子项目,并将静态库子项目作为exe的子项目?
有什么建议吗?我完全是Qt Creator的新手,需要在Linux上使用它。
谢谢!
2个回答

3
为了让qmake生成带有子项目的漂亮的.sln文件,请创建一个主.pro文件,并使用subdirs模板设置每个项目对另一个项目的必要依赖关系。
Qt Creator在后台使用qmake生成一个makefile并进行构建,但是您也可以通过运行以下命令生成VS解决方案文件:
qmake ../path/to/source -tp vc

你还可以使用Qt Visual Studio插件来GUI-化这个过程。
另外,为了确保在每次更改依赖的静态库时重新链接可执行文件,请使用:
CONFIG( debug, debug|release ) {
    LIBSUFFIX = d
    win32:LIBS += -L../staticlib1/debug
    win32:PRE_TARGETDEPS += ../staticlib1/debug/libAmbrosiad.a
} else {
    LIBSUFFIX =
    win32:LIBS += -L../staticlib1/release
    win32:PRE_TARGETDEPS += ../staticlib1/release/libAmbrosia.a
}
unix:LIBS += -L ../libAmbrosia
unix:PRE_TARGETDEPS += ../libAmbrosia/libAmbrosia$${LIBSUFFIX}.a

将类似以下内容放入可执行文件的.pro文件中,注意LIBSUFFIX部分完全是可选的,但与Qt自身构建方式保持一致,所以我也这样使用。在Linux/Mac构建中,“release”和“debug”子目录不存在。为了完整起见,冗长的if-else条件是在qmake项目文件中区分debugrelease构建的正确方法(TM)。更简单的方法可能会在多种情况下出现错误。


谢谢。我想要做相反的事情,从VS sln文件生成.pro文件。虽然我没有看到任何可以实现这一点的东西,但我可能需要自己编写一些代码。总之,你的意思是说subdirs模板通常是最好的选择,这样静态库就会成为exe项目的子目录。 - glutz
@glutz:是的,逆向可能不能自动化(虽然您可以尝试Visual Studio Qt插件,它可能会为您处理基础内容)。您将有一个“subdirs”.pro文件,其中将为每个静态库和* exe *拥有子目录。 - rubenvb
显然我的主要困惑是我在创建静态库后没有设置TEMPLATE。因此,项目管理器从未给我机会将库添加到exe项目中。 - glutz

1

在Linux上,会话文件被创建在~/.config/Nokia/qtcreator中,扩展名为qws,但我认为这不是一个适合多个用户的真正解决方案。


1
好的,我不清楚为什么会有会话(sessions)存在,如果它们不是用来在用户之间共享的。这似乎是项目结构和本地用户设置的混合。难道这不应该是两个单独的功能,就像VS使用.sln(共享)和.suo(本地)一样吗? - glutz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接