如何add_custom_target取决于"make install"

Sip*_*pex 13 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)    
Run Code Online (Sandbox Code Playgroud)

编辑:我尝试过DEPENDS install关键字,add_dependencies(package install)但它们都不起作用.

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

小智 7

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

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}"
)
Run Code Online (Sandbox Code Playgroud)

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

cmake --build /path/to/build/directory --target MyInstall
Run Code Online (Sandbox Code Playgroud)

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}"
)
Run Code Online (Sandbox Code Playgroud)