2013-06-30 64 views
2

我对CMake非常陌生,并且无法设置安装规则。 我想在make install运行下面的命令:在CMake中运行安装命令,但前提是

update-rc.d solshare_stats_runscript defaults 

但我只是想,如果运行此命令:

CMAKE_INSTALL_PREFIX="/" 

我怎样才能做到这一点?

回答

5

您可以使用install(SCRIPT ...)来做到这一点,并提供一个wee CMake脚本来调用。在InstallScript.cmake

install(SCRIPT InstallScript.cmake) 

然后:

所以添加到您的CMakeLists.txt

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() 

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

+0

首先:非常感谢。第二:脚本有一个问题:它不知道变量$ {CMAKE_INSTALL_PREFIX}:'如果给定的参数: “STREQUAL”“/” 未知参数指定 调用堆栈(最近一次调用在前): cmake_install。 cmake:60(INCLUDE) make:*** [install]错误1 ' – Cheiron

+0

我通过将检查移动到CMakeLists.txt文件得到了修复。再次感谢! – Cheiron

+0

很高兴你把它修好了。另一种方法是用引号将'$ {CMAKE_INSTALL_PREFIX}'封装在'if'里面(就像我现在所做的那样)。干杯。 – Fraser