我正在开发两个库A和B,其中B取决于A,两者都在他们自己的Git存储库中管理。这些库使用CMake构建并安装在标准UNIX目录中。在安装过程中,还会安装由.pc
使用的pkg-config
文件。库B使用pkg-config
查找库A,因此必须在系统范围内安装库A并使用make install
或将PKG_CONFIG_PATH
设置为相应的目录。
现在,我使用Jenkins在远程计算机上构建库A.遗憾的是,无法构建库B,因为不满足依赖性(pkg-config
找不到库A)。在预构建步骤中设置路径不起作用,因为命令在其自己的shell中运行。
问题是
make install
库A吗?或者,/var/lib/jenkins/jobs/libA/install_dir/lib
吗?答案 0 :(得分:2)
按顺序回答您的问题:
制作安装库A - 您可以配置构建库A的Jenkins作业,以将库存档为构建工件。然后构建库B的工作可以在运行开始时从Jenkins下载人工制品 - 例如http:/// job / libA / lastSuccessfulBuild / artifact /
一旦库B作业收集了库A,就可以安装和使用它。
配置Cmake - 我对cmake知之甚少,所以我恐怕无法回答这个问题。
有没有更好的方法 - 可能使用Rake,我们用它来控制具有大量依赖关系的构建链。虽然我不确定如果必须在远程机器上构建库A,它会有多好用。如果两个库都在同一台机器上构建,那么管理起来可能会更简单。
答案 1 :(得分:1)
使用工件,如user1013341所示,是此问题所需的步骤之一。但为了让它与pkg-config
一起工作,我们还需要做更多的事情:
CMakeLists.txt
以生成make package_source
的tarball。.pc
文件指向库A的安装位置。PKG_CONFIG_PATH
和LD_LIBRARY_PATH
设置为未分级的库A.