Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在CMake中运行install命令,但仅当_Cmake - Fatal编程技术网

在CMake中运行install命令,但仅当

在CMake中运行install命令,但仅当,cmake,Cmake,我对CMake非常陌生,在设置安装规则时遇到困难。 我想在makeinstall中运行以下命令: update-rc.d solshare_stats_runscript defaults 但我只想在以下情况下运行此命令: CMAKE_INSTALL_PREFIX="/" 如何执行此操作?您可能可以使用并提供一个要调用的wee CMake脚本来执行此操作 因此,请将此添加到您的CMakeLists.txt: install(SCRIPT InstallScript.cmake) 然后在In

我对CMake非常陌生,在设置安装规则时遇到困难。 我想在
makeinstall
中运行以下命令:

update-rc.d solshare_stats_runscript defaults
但我只想在以下情况下运行此命令:

CMAKE_INSTALL_PREFIX="/"

如何执行此操作?

您可能可以使用并提供一个要调用的wee CMake脚本来执行此操作

因此,请将此添加到您的CMakeLists.txt:

install(SCRIPT InstallScript.cmake)
然后在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()

您可能需要在脚本中为调用提供更多参数(例如,
WORKING\u DIRECTORY
)。

首先:非常感谢。第二:脚本有一个问题:它不知道变量${CMAKE_INSTALL_PREFIX}:`如果给定参数:“STREQUAL”“/”指定的未知参数调用堆栈(首先是最近的调用):CMAKE_INSTALL.CMAKE:60(INCLUDE)make:**[INSTALL]错误1`我通过将检查移到CMakeLists.txt文件来修复该问题。再次感谢!很高兴你修好了。另一种方法是将
${CMAKE\u INSTALL\u PREFIX}
用引号括在
if
中(就像我现在做的那样)。干杯。@Fraser你对CMake的了解给我留下了深刻的印象。。。你是开发人员吗?@Antonio谢谢你的夸奖,但不,我不是一个厨具开发人员。我不确定这里有多少厨具开发人员,但是和都是厨具,直到最近,我也是。