2014-06-23 233 views
2

我有几个Qt项目依赖于我开发的Qt库。 使用该库的项目的项目文件(.pro)定义了LIBS和PRE_TARGETDEPS路径。例如: -用Jenkins配置Qt构建

PRE_TARGETDEPS + = ../ProjectLibrary_Qt_5_2_1_clang_64bit-Debug/projectlibrary.dylib

LIBS + = -L ../ ProjectLibrary_Qt_5_2_1_clang_64bit,调试-lProjectLibrary

正如你所看到的,有一个定义的链接库的路径,他们已经通过Qt Creator与Shadow Builds一起构建。该文件的层次结构是这样的: -

  • 项目
    • ProjectLibrary_Qt_5_2_1_clang_64bit,调试
      • ProjectLib.dylib(内置库)
    • DependentProject
      • DependentProject.pro

(dylib是OSX扩展,但它同样可以被.LIB为Windows,或.so对于Linux)

然而,詹金斯创建一个不同的文件夹结构: -

  • 工作
    • ProjectLib
      • 工作区
        • Project.dylib
    • DependentProject
      • 工作区
        • DependentProject.pro

现在有一个额外的目录(工作区),它需要反映在.pro文件中,并且这些文件夹的名称是不同的。

显然,如果我只是用.Jenkins版本调用.ma上的qmake,库的路径就会出错。

那么,我是否需要创建一个单独的.pro只是为了能够反映Jenkins构建时的路径,或者是否有另一种方法来处理在Jenkins中指定项目文件库的位置,而无需改变目录结构?根据您当前构建CONFIGRATION

回答

3

解决方法1)修改.pro文件是这样的:

isEmpty(PROJECT_PATH) { 
    PROJECT_PATH=../ProjectLibrary_Qt_5_2_1_clang_64bit-Debug 
} 

LIBS += -L$${PROJECT_PATH} -lProjectLibrary 

然后在詹金斯,你应该通过PROJECT_PATH = {路径到您的项目}传递到qmake

方案二)

使用git submodule获取ProjectLibrary作为建设项目的一部分。然后你不需要手动建立Qt Creator的ProjectLibrary。

+0

这就是我正在寻找的。谢谢; O) – TheDarkKnight