【问题标题】:Best practice for storing external libraries on Windows Qt Project在 Windows Qt 项目上存储外部库的最佳实践
【发布时间】:2014-01-04 18:39:02
【问题描述】:

我正在使用 Qt 开发一个使用许多外部库的项目,我想知道是否有一种通用方法可以使源代码在不同机器之间具有某种程度的可移植性。

目前,我通过 Qt Creator(添加库...)将各种库添加到项目中,它使用 .pro 文件中的相对路径。这显然不仅在我移动项目后立即停止工作,而且如果任何库路径发生变化,也不会在其他机器上工作。使用绝对路径只能解决部分问题,因为我仍然需要确保每台机器上的每个库都在同一路径下。

举个例子,我的 .pro 文件目前处于混乱状态:

LIBS += -L"c:/Program Files/Microsoft SDKs/Kinect/v1.7/lib/x86/" -lKinect10

win32 {
INCLUDEPATH += "c:/Program Files/Microsoft SDKs/Kinect/v1.7/inc"
DEPENDPATH += "c:/Program Files/Microsoft SDKs/Kinect/v1.7/inc"
}

LIBS += -ladvapi32 \
-lgdi32

INCLUDEPATH += "$$PWD/../../../../../Libraries/PCL 1.6.0/include/pcl-1.6"
DEPENDPATH += "$$PWD/../../../../../Libraries/PCL 1.6.0/include/pcl-1.6"

INCLUDEPATH += "C:/Libraries/PCL 1.6.0/3rdParty/Boost/include"
DEPENDPATH += "C:/Libraries/PCL 1.6.0/3rdParty/Boost/include"

LIBS += -L"$$PWD/../../../../../Libraries/PCL 1.6.0/3rdParty/Boost/lib/" -llibboost_date_time-vc100-mt-gd-1_49

LIBS += -L"$$PWD/../../../../../Libraries/PCL 1.6.0/lib/" -lpcl_visualization_debug

LIBS += -L"$$PWD/../../../../../Libraries/opencv/build/x86/vc10/lib/" -lopencv_core245

INCLUDEPATH += "$$PWD/../../../../../Libraries/opencv/include"
DEPENDPATH += "$$PWD/../../../../../Libraries/opencv/include"

最好的组织方式是什么?

【问题讨论】:

  • 你不能把它们放在你的项目中,就像 Qt 本身存储第三方源的 3rd-party 文件夹中一样吗?
  • 也许,但如果我有多个项目使用相同的库怎么办?还有一些库使用安装程序并且总是以“程序文件/...”结束,我应该将我需要的文件移动到我的项目中吗?我只是想知道在这种情况下的常见做法是什么,假设有人在多台机器上处理一个项目。

标签: c++ windows qt qmake


【解决方案1】:

我建议在您的项目中使用“3rdparty”文件夹,就像 Qt does that internal in its repository 一样。这样,您可以正确设置每台机器上相同的路径。

如果有必要为不同的架构等提供二进制文件,那么我建议甚至导入代码。然后,您可以为目标系统即时构建它们。这比使用预建库要花费更多时间,但这是灵活的代价。

如果您需要在多个项目中使用通用库,您始终可以为此使用专用存储库,并制定必须签出的政策。

您可能正在寻找的一个“术语”是存在于 svn 世界中的“externals”,但您也可以将其视为另一个 git 存储库中的 git 存储库。关键是,您插入通用“存储库”以在依赖它的项目之间共享。

您也可以始终拥有一个设置脚本,它只是为人们正确设置路径,而没有太大的灵活性。我在大公司的公司环境中看到了很多这种情况,他们试图以较低的灵活性为代价实现一致性。

根据我在开源和专有领域的经验,这些事情相当普遍。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-24
    相关资源
    最近更新 更多