在add_subdirectory之前,需要安装库

时间:2015-12-28 21:28:46

标签: c++ makefile cmake

我有一个由多个库和可执行文件组成的项目。可执行文件使用安装后最终位置指向的这些库。

所以,构建se的正常程序是:

cd lib1
mkdir build
make 
make install
cd ..
rm -r build

cd lib2
mkdir build
make 
make install
cd ..
rm -r build

最后转到可执行文件

cd exec1
mkdir build
make 
make install
cd ..
rm -r build

我想拥有一个独特的CMakeLists.txt,我可以在其中构建我的整个项目链,如下:

cmake_minimum_required(VERSION 3.2.2)
project(whole)
add_subdirectory(lib1)
add_subdirectory(lib2)
add_subdirectory(exec1)

exec1需要安装lib1lib2,因为它指向了权威的lib目录。跑步时,我得到:

make[2]: *** No rule to make target '/home/project/dev/lib/liblib1.so', needed by 'exec1/main'.  Stop.
CMakeFiles/Makefile2:175: recipe for target 'exec1/CMakeFiles/aeirturesettofactory.dir/all' failed
make[1]: *** [exec1/CMakeFiles/exec1.dir/all] Error 2

如何解决该安装依赖性?

1 个答案:

答案 0 :(得分:2)

external_project_add()可能是你的答案。你应该在cmake文档中查看它。但我将总结其能力:

  • 它可以在构建之前检查来自远程仓库的源代码(但它不必)。
  • 它可以执行任何必要的构建步骤。
  • 外部项目可以使用CMake或经典的configure / make / make-install(只要安装步骤不需要sudo)。
  • 它可以使用结果的位置填充CMake变量。