2013-06-21 11 views
19

フォルダ/AにあるCMakeLists.txtにコマンドのfooがあるとします。追加のCMakeLists.txtを含めるには

fooは、フォルダにあるantother CMakeLists.txtで定義されています。

fooに電話するには、/B/CMakeLists.txt/A/CMakeLists.txtからどのように参照できますか?

私は経由/B/CMakeLists.txtに検索パスを設定しようとしました:

  • CMAKE_INCLUDE_PATH
  • CMAKE_MODULE_PATH
  • CMAKE_SOURCE_DIR

それらのどれも働きました。

cmakeのはまだUnknown CMake command "foo".includeで行うことができます

答えて

26

が、ここでいくつかの簡単な例ですcomplaines:BのA/CMakeLists.txt

function(foo) 
    message(STATUS "heya") 
endfunction() 

コンテンツの

コンテンツ/ CMakeLists.txt

cmake_minimum_required(VERSION 2.8) 
include(${CMAKE_CURRENT_SOURCE_DIR}/../A/CMakeLists.txt) 
foo() 

今、他のCMakeLists.txtもそのファイル内のすべてを実行するので、B/CMakeLists.txtにターゲットがある場合はそれを避けることができます

コードを変更することができれば、 add_subdirectoryを呼び出す前にトップレベルのCMakeLists.txtを入力してください。

26

このファイルに関数定義のみが含まれている場合は、CMakeLists.txtという名前ではなく、some_adequate_nameという名前を付けてください。 cmake

これらの関数定義が必要な場所には、includeを含めることができます。

関連する問題