首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在CMake中的生成步骤后运行命令

在CMake中的生成步骤后运行命令
EN

Stack Overflow用户
提问于 2011-08-17 18:40:15
回答 3查看 10.1K关注 0票数 8

我有一个命令行工具,它应该在CMake创建我的.sln文件之后运行。有没有办法用CMake做到这一点呢?

使用execute_process(命令..)在CMakeLists.txt的末尾没有帮助,因为这是在配置步骤之后执行的,但是,.sln-file是在生成步骤中创建的。

非常感谢!

EN

回答 3

Stack Overflow用户

发布于 2017-04-01 14:16:26

一种相当可怕的方式是从cmake调用cmake,并在退出父脚本的过程中执行生成后的工作。

代码语言:javascript
复制
option(RECURSIVE_GENERATE "Recursive call to cmake" OFF)

if(NOT RECURSIVE_GENERATE)
    message(STATUS "Recursive generate started")
    execute_process(COMMAND ${CMAKE_COMMAND}
        -G "${CMAKE_GENERATOR}"
        -T "${CMAKE_GENERATOR_TOOLSET}"
        -A "${CMAKE_GENERATOR_PLATFORM}" 
        -DRECURSIVE_GENERATE:BOOL=ON 
        ${CMAKE_SOURCE_DIR})
    message(STATUS "Recursive generate done")

    # your post-generate steps here

    # exit without doing anything else, since it already happened
    return()
endif()

# The rest of the script is only processed by the executed cmake, as it 
# sees RECURSIVE_GENERATE true

# all your normal configuration, targets, etc go here

如果您需要使用命令行选项的各种组合(如"-DTHIS -DTHAT“)来调用cmake,则此方法不能很好地工作,但对于许多项目来说可能是可以接受的。它可以很好地处理持久缓存的变量,包括最初生成cmake编译器时的所有检测。

票数 1
EN

Stack Overflow用户

发布于 2018-01-30 16:15:52

从下面的链接可以看出,在CMake生成.sln文件之后,似乎没有这样的命令来指定执行。

另一种方法是编写一个包装器脚本,如上述链接之一所述。

代码语言:javascript
复制
cmake ..
DoWhatYouWant.exe
票数 0
EN

Stack Overflow用户

发布于 2011-08-18 02:53:13

是的,与add_custom_target配对的add_custom_command解决了这一问题

  • http://cmake.org/cmake/help/cmake-2-8-docs.html#command:add_custom_command
  • http://cmake.org/cmake/help/cmake-2-8-docs.html#command:add_custom_target

举个例子,看看我对另一个问题的回答

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7091447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档