9

${VAR_NAME}CMake は構文だけでなく、構文でも変数を使用できることに気付きました<VAR_NAME>。たとえば、次のコード:

IF(NOT CMAKE_CXX_LINK_EXECUTABLE)
  SET(CMAKE_CXX_LINK_EXECUTABLE
    "<CMAKE_CXX_COMPILER>  <FLAGS> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS>  -o <TARGET> <LINK_LIBRARIES>")
ENDIF(NOT CMAKE_CXX_LINK_EXECUTABLE)

という名前のスクリプトの CMake モジュール フォルダーに が見つかりましたCMakeCXXInformation.cmake

ドキュメントに山かっこを使用した構文に関する説明が見つかりませんでした。誰かがその意味を説明できるような構文を使用しましたか?

4

1 に答える 1

3

${FOO}通常の CMake 変数は、通常の構文で逆参照できます。これらの逆参照は、CMake の実行中に発生します。

ある時点で、CMakeは の形式を持つジェネレータ式$<FOO>を導入しました。CMake の観点からは、そのような式はプレーンな文字列です。ただし、ジェネレーター コードが実行されているとき (たとえば、makeまたはを実行しているときninja) は逆参照されます。

最後に、<FOO>表現があります。これらもプレーンな文字列であり、主に内部 CMake コードで、後でstring(REPLACE ...)コマンドに置き換えられる代替として使用されます。たとえば、このような式は、CMake で新しい言語のサポートを追加するときに広く使用されます。詳細については、を参照share/cmake/Modules/CMakeAddNewLanguage.txtしてください。

ExternalProjectコマンドのドキュメントには、いくつか<FOO>のスタイル付き変数が記載されています。<SOURCE_DIR>およびは、特定の外部プロジェクト (およびを呼び出したプロジェクトではあり<BINARY_DIR>ません) の実際のソースおよびビルド ディレクトリに置き換えられることは明らかですが、このコマンド セットで使用可能な置換の完全なリストを見つけることができませんでした。${CMAKE_SOURCE_DIR}${CMAKE_BINARY_DIR}ExternalProject_*()

于 2012-11-16T12:43:41.323 に答える