0

get_filename_component変数で指定された相対パスの絶対パスを取得するためにcmakeで使用しています。

そして、ツリー外/ソース外ビルドを実行したいと考えています。

参照パスとしてget_filename_component使用しているようです。CMAKE_SOURCE_DIR

それを変更または回避する方法はありますか?

私が試した1つの方法は、潜在的な相対パスに接頭辞を付けることです${CMAKE_BINARY_DIR}が、指定されたパスが相対パスではなく機能しなくなります。

4

1 に答える 1

2

相対パスが常にに対して相対的であると仮定するとCMAKE_BINARY_DIR、次を使用してこれを非常に簡単に処理できますif(IS_ABSOLUTE ...)

if(NOT IS_ABSOLUTE ${MyPath})
  set(MyAbsPath ${CMAKE_BINARY_DIR}/${MyPath})
endif()

サブジェクト ファイルまたはディレクトリが CMake ランタイムに存在する場合は、可能なandfind_fileを渡して、いつでも呼び出しを行うことができます。ファイルが存在し、見つかった場合、結果の変数はファイルへのフル パスを保持します。NAMESPATHS

または、のif(EXISTS ...)署名を使用しifて、指定されたファイルが存在するかどうかを確認できます。

于 2013-04-11T00:22:48.133 に答える