【发布时间】: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 文件夹中一样吗?
-
也许,但如果我有多个项目使用相同的库怎么办?还有一些库使用安装程序并且总是以“程序文件/...”结束,我应该将我需要的文件移动到我的项目中吗?我只是想知道在这种情况下的常见做法是什么,假设有人在多台机器上处理一个项目。