2

*CFLAGS(すべてのターゲットの) CMake プロジェクトの完全なものを印刷することは可能*CXX_FLAGSですか?

CMakeCache.txtプロジェクトを構成してビルドした後に調べてみましたが、関連するすべての変数はほとんど空であり、依存関係に固有のフラグなど*C*FLAGS*のプロジェクト設定が含まれていません。-D-I

なぜ私はこれをしたいのですか?clang-complete vim プラグインの構成ファイルを作成するには: https://vim.sourceforge.io/scripts/script.php?script_id=3302

4

3 に答える 3

8

「グローバル」変数を出力する代わりに、それぞれのターゲットのプロパティを出力することをお勧めします。CMAKE_xxx_FLAGS の値は、ターゲットが定義されるときにターゲットにアタッチされ、後で変更される場合があります。

これは、 https : //stackoverflow.com/a/34292622/5751151に触発された、プロジェクトで使用している便利なヘルパー関数です。

function(print_target_properties tgt)
    if(NOT TARGET ${tgt})
        message("There is no target named '${tgt}'")
        return()
    endif()

    # this list of properties can be extended as needed
    set(CMAKE_PROPERTY_LIST SOURCE_DIR BINARY_DIR COMPILE_DEFINITIONS
             COMPILE_OPTIONS INCLUDE_DIRECTORIES LINK_LIBRARIES)

    message("Configuration for target ${tgt}")

    foreach (prop ${CMAKE_PROPERTY_LIST})
        get_property(propval TARGET ${tgt} PROPERTY ${prop} SET)
        if (propval)
            get_target_property(propval ${tgt} ${prop})
            message (STATUS "${prop} = ${propval}")
        endif()
    endforeach(prop)

endfunction(print_target_properties)
于 2017-09-21T06:41:32.440 に答える