使用Jenkins配置Qt构建

时间:2014-06-23 16:27:54

标签: qt jenkins continuous-integration build-process

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

  

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

     

LIBS + = -L ../ ProjectLibrary_Qt_5_2_1_clang_64bit-Debug -lProjectLibrary

正如您所看到的,链接库有一个已定义的路径,它们通过Qt Creator构建了Shadow Builds。文件层次结构如下: -

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

(dylib是一个OSX扩展,但它同样可以是.lib for Windows,或.so for linux)

但是,Jenkins创建了一个不同的文件夹结构: -

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

现在有一个额外的目录(工作空间),这需要在.pro文件中反映出来,并且文件夹的名称也不同。

显然,如果我只是使用Jenkins构建在.pro上调用qmake,那么库的路径就会出错。

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

1 个答案:

答案 0 :(得分:3)

解决方案1)根据您当前的构建配置

修改.pro文件,如下所示:

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

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

然后在Jenkins中,你应该将PROJECT_PATH = {你的项目的路径}传递给qmake

解决方案2)

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