我有几个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。文件层次结构如下: -
(dylib是一个OSX扩展,但它同样可以是.lib for Windows,或.so for linux)
但是,Jenkins创建了一个不同的文件夹结构: -
现在有一个额外的目录(工作空间),这需要在.pro文件中反映出来,并且文件夹的名称也不同。
显然,如果我只是使用Jenkins构建在.pro上调用qmake,那么库的路径就会出错。
那么,我是否需要创建一个单独的.pro只是为了能够在使用Jenkins构建时反映路径,或者是否有另一种方法来处理为Jenkins指定项目文件中库的位置,而不必改变目录结构?
答案 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。