从cmake脚本运行终端命令

时间:2018-04-08 10:13:25

标签: cmake

我试图在Cmake中这样做:

  • 使用我声明类
  • 的源文件创建库
  • 检查库是否已安装以及是否未将其安装到指定位置

在检查上述条件的if中,我试过运行' sudo make install'因此,我不必在运行&#c; cmake'之后手动执行此操作。命令。但是,如果我添加' execute_process'在那里我收到错误:' make:***没有规则来制定目标'安装'。 &#39 ;. 请告诉我我做错了什么以及如何解决这个问题,以便命令“make install'当我使用' cmake'生成makefile时,也会运行。命令。谢谢。这是代码:

cmake_minimum_required(VERSION 3.0)
project (TestLibrary)

include_directories(include)
set(SOURCES src/Student.cpp)
add_library(testStudent SHARED ${SOURCES})

if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Generated_Library/libtestStudent.so)
 install(TARGETS testStudent DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/Generated_Library)
 execute_process(COMMAND sudo make install
                 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/build)
endif()

1 个答案:

答案 0 :(得分:1)

execute_process在配置时运行其命令,然后CMake生成构建系统。当命令运行时,没有Makefile,因此你看到了错误。

CMake并非旨在用作执行所有构建的唯一命令,而仅用于生成构建系统(Makefile或其他)作为构建过程的第一步。你可以做的是获得一个独特的构建命令,就是创建一个build.sh脚本,用适当的参数运行CMake,然后make并选择make install。