Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Jenkins配置Qt构建_Qt_Jenkins_Continuous Integration_Build Process - Fatal编程技术网

使用Jenkins配置Qt构建

使用Jenkins配置Qt构建,qt,jenkins,continuous-integration,build-process,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\u Qt\u 5\u 2\u 1\u clang\u 64位调试-lProjectLibrary 正如您所看到的,链接库有一个已定义的路径,它们通过Q

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

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

LIBS+=-L../ProjectLibrary\u Qt\u 5\u 2\u 1\u clang\u 64位调试-lProjectLibrary

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

  • 计划
    • ProjectLibrary\u Qt\u 5\u 2\u 1\u clang\u 64位调试
      • ProjectLib.dylib(构建库)
    • 从属项目
      • DependentProject.pro
(dylib是一个OSX扩展,但对于Windows它也可以是.lib,对于linux它也可以是.so)

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

  • 工作
    • 项目库
      • 工作空间
        • Project.dylib
    • 从属项目
      • 工作空间
        • DependentProject.pro
现在有一个额外的目录(工作区),它需要在.pro文件中反映出来,并且文件夹的名称不同

显然,如果我用Jenkins构建调用.pro上的qmake,那么库的路径将是错误的

因此,我是否需要创建一个单独的.pro来反映使用Jenkins构建时的路径,或者是否有其他方法来处理为Jenkins指定项目文件中库的位置,而不必更改目录结构?

解决方案1)基于当前构建配置

按如下方式修改.pro文件:

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

LIBS += -L$${PROJECT_PATH} -lProjectLibrary
然后在Jenkins中,您应该将PROJECT_PATH={PATH to your PROJECT}传递给qmake

解决方案2)

使用
git子模块
获取项目库作为建筑项目的一部分。然后,您不需要由Qt Creator手动构建ProjectLibrary。

解决方案1)基于您当前的构建配置

按如下方式修改.pro文件:

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

LIBS += -L$${PROJECT_PATH} -lProjectLibrary
然后在Jenkins中,您应该将PROJECT_PATH={PATH to your PROJECT}传递给qmake

解决方案2)


使用
git子模块
获取项目库作为建筑项目的一部分。那么您就不需要通过Qt Creator手动构建ProjectLibrary了。

这正是我想要的。谢谢O) 那正是我想要的。谢谢O)