如何add_custom_target取决于" make install"

时间:2014-06-11 13:07:29

标签: cmake

我想添加名为" package"的自定义目标。这取决于安装目标。 当我运行make package时,它应首先运行make install,然后运行我的自定义命令来创建包。

我尝试了以下DEPENDS install,但它不起作用。

我收到错误消息:CMakeFiles/install.dir/all

需要制定目标CMakeFiles/package.dir/all的规则
install(FILES
        "module/module.pexe"
        "module/module.nmf"
        DESTINATION "./extension")

add_custom_target(package
    COMMAND "chromium-browser" "--pack-extension=./extension"
    DEPENDS install)    

编辑:我尝试了DEPENDS install个关键字和add_dependencies(package install),但它们都没有效果。

根据http://public.kitware.com/Bug/view.php?id=8438 无法将依赖项添加到内置目标,例如installtest

1 个答案:

答案 0 :(得分:5)

您可以创建自定义目标,然后运行install和其他一些脚本。

CMake脚本

例如,如果你有一个CMake脚本MyScript.cmake

add_custom_target(
    MyInstall
    COMMAND
    "${CMAKE_COMMAND}" --build . --target install
    COMMAND
    "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_LIST_DIR}/MyScript.cmake"
    WORKING_DIRECTORY
    "${CMAKE_BINARY_DIR}"
)

您可以通过构建目标MyInstall来运行它:

cmake --build /path/to/build/directory --target MyInstall

Python脚本

当然,您可以使用任何脚本语言。只记得对其他平台礼貌 (所以编写bash脚本可能不是一个坏主意,它在Windows上不起作用。)

例如python脚本MyScript.py

find_package(PythonInterp 3.2 REQUIRED)

add_custom_target(
    MyInstall
    COMMAND
    "${CMAKE_COMMAND}" --build . --target install
    COMMAND
    "${PYTHON_EXECUTABLE}" "${CMAKE_CURRENT_LIST_DIR}/MyScript.py"
    WORKING_DIRECTORY
    "${CMAKE_BINARY_DIR}"
)