在CMake中运行install命令,但仅限于

Che*_*ron 2 cmake

我对CMake非常陌生,并且无法设置安装规则.我想在以下命令中运行以下命令make install:

update-rc.d solshare_stats_runscript defaults
Run Code Online (Sandbox Code Playgroud)

但是我只想在以下情况下运行此命令:

CMAKE_INSTALL_PREFIX="/"
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Fra*_*ser 5

您可以使用install(SCRIPT ...)并提供要调用的wee CMake脚本.

所以将它添加到您的CMakeLists.txt:

install(SCRIPT InstallScript.cmake)
Run Code Online (Sandbox Code Playgroud)

然后在InstallScript.cmake中:

if("${CMAKE_INSTALL_PREFIX}" STREQUAL "/")
  execute_process(COMMAND update-rc.d solshare_stats_runscript defaults
                  RESULT_VARIABLE Result
                  OUTPUT_VARIABLE Output
                  ERROR_VARIABLE Error)
  if(Result EQUAL 0)
    message(STATUS "Ran update-rc.d as CMAKE_INSTALL_PREFIX == \"/\"")
  else()
    message(FATAL_ERROR "Result - ${Result}\nOutput - ${Output}\nError - Error")
  endif()
else()
  message(STATUS "Not running update-rc.d as CMAKE_INSTALL_PREFIX != \"/\"")
endif()
Run Code Online (Sandbox Code Playgroud)

您可能需要execute_process在脚本中为调用提供更多参数(例如WORKING_DIRECTORY).

  • @Antonio感谢恭维,但不,我不是Kitware开发者.我不确定这里有多少Kitware人员,但是[Bill Hoffman](http://stackoverflow.com/users/216085/bill-hoffman)和[Robert Maynard](http://stackoverflow.com/users/95496/robertjmaynard)是Kitware,直到最近,[David Cole](http://stackoverflow.com/users/236192/dlrdave)也是如此. (2认同)