【问题标题】:CMake : how to use bash command in CMakeLists.txtCMake:如何在 CMakeLists.txt 中使用 bash 命令
【发布时间】:2010-10-14 01:24:03
【问题描述】:

我想知道如何在 CMakeLists.txt 中使用 bash 命令。我想要的是获取使用检索的处理器数量:

export variable=`getconf _NPROCESSORS_ONLN`

并使用类似的东西将 NB_PROCESSOR 设置为变量:

SET (NB_PROCESSOR variable)

所以我的问题是如何在 CMakeLists.txt 中使用 getconf 命令以及如何在 CMake SET 命令中使用结果(存储在变量中)?

【问题讨论】:

    标签: bash cmake


    【解决方案1】:

    这似乎可以解决问题,并且也保存了“集合”。

    execute_process(COMMAND getconf  _NPROCESSORS_ONLN
                    OUTPUT_VARIABLE NB_PROCESSOR)
    

    【讨论】:

    • 有了这个,我在“cmake”期间看到了命令的结果。但如果我的 config.h.in 中有“#cmakedefine NB_PROCESSOR ${NB_PROCESSOR}”,我将得到“#undef NB_PROCESSOR”而不是“#define NB_PROCESSOR 值”。有什么线索吗?
    • 我搞砸了 - 它应该是 OUTPUT_ 而不是 RESULT_VARIABLE。前者存储程序的输出,后者存储结果($? in bash-speak)
    • 已经试过了,好像不行,我认为结果可能被认为是一个字符串,我想要一个int。仍在努力寻找解决方案:)
    • 哎呀,我说我尝试使用 output_var 是错误的,它有效!谢谢!
    【解决方案2】:

    使用 EXEC_PROGRAM 命令,然后使用 SET 的 CACHE 选项 命令将输出保存到 GTK_PKG_FLAGS 之类的变量中。然后使用 SET 命令添加值。像这样的:

    IF(NOT GTK_PKG_FLAGS)
       EXEC_PROGRAM(pkg-config ARGS --cflags --libs gtkmm
                    OUTPUT_VARIABLE GTK_PKG_FLAGS)
       SET(GTK_PKG_FLAGS "${GTK_PKG_FLAGS}" CACHE STRING "GTK Flags")
    ENDIF(NOT GTK_PKG_FLAGS)
    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GTK_PKG_FLAGS}")
    

    链接:http://www.cmake.org/pipermail/cmake/2005-January/006051.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-30
      相关资源
      最近更新 更多