从 cmake 执行 make

oSz*_*oSz 3 c++ makefile cmake clion

我最近开始学习 cmake 和 make,但遇到了一个我无法解决的问题。
我有两个项目,一个在 IDE CLion 中使用 cmake 的小型测试应用程序和一个使用 make 的库,我无法更改它们的构建系统。我想从 cmake 项目构建使用 make 的那个。库的 make 文件本身运行良好。

这是项目布局:

project/CMakeLists.txt
project/libvz/Makefile
project/libvz/main.cpp
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法:

CMakeLists.txt:

cmake_minimum_required(VERSION 3.0.0)
project(builder)

add_custom_target("libvz"
                  "/usr/bin/make -f ${CMAKE_CURRENT_SOURCE_DIR}/libvz/Makefile")
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我收到错误消息:“/bin/sh: /usr/bin/make -f /home/szil/project/libvz/Makefile: No such file or directory”

我还尝试使用 ExternalProject_Add 和 ExternalProject_Add_Step 命令进行构建,但都不适合我。

感谢任何帮助,谢谢!

Fra*_*ser 5

您可能只需要避免将整个make命令括在一组引号中。通过这样做,CMake 正在寻找一个名为“/usr/bin/make -f ...”的可执行文件。

add_custom_target(libvz
                  /usr/bin/make -f "${CMAKE_CURRENT_SOURCE_DIR}/libvz/Makefile")
Run Code Online (Sandbox Code Playgroud)

从表面上看,这ExternalProject_Add听起来像是这项工作的更好工具 - 也许它的工作原因与此不同?