2011-12-08 14 views
1

私はCMakeには新しく、CMakeによって作成されたファイルの構成に問題があります。CMakeは奇妙なディレクトリ構造を作成します

まず、ファイルツリーについて詳しく説明します。私は、2つのソースディレクトリ(グリッドとサンプル)とビルドディレクトリからサンプルプログラムを使って簡単なライブラリを構築しようとしています。だから、3つのCmakeLists.txtファイルがあります。したがって、トップディレクトリはCMakeLists.txt、/ Grid、/ examples、/ buildのようになります。

このCMakeLists.txtは含まれています:グリッドフォルダ内

project(talyfem) 
cmake_minimum_required(VERSION 2.8.4) 
set(CMAKE_CXX_FLAGS "-g") 
add_subdirectory(examples Grid) 

CmakeLists.txtは次のとおりです。例の中で

add_library(${PROJECT_NAME} FEMElm.cpp Grid.cpp GridField.cpp SuperGrid.cpp SuperGrid3D.cpp) 

はCmakeLists.txtがあるフォルダ:

set(EXAMPLES example1) 
foreach(example ${EXAMPLES}) 
    add_executable(${example} ${example}.cpp) 
    target_link_libraries(${example} ${PROJECT_NAME}) 
endforeach(example) 

IをビルドディレクトリからCMakeを次のように実行します:Cmake ../ これを実行すると、st私が理解できない、正しいと思わない範囲のファイル構造。まず、../build/CMakeFilesフォルダを作成します。これは私が期待するものです。しかし、それは../build/Gridフォルダを作成し、このフォルダ内に別のCMakeFilesフォルダがあり、そこにexample1.dirフォルダが含まれています。私がサブディレクトリの順序を切り替えると、グリッドの最初と最後の例は、例のサブディレクトリ内にあるGrid.dirと逆の状態になります。

これは正しくないと思われます。この問題を解決するための支援がありがとうございます。

../build/CMakeFilesには、Grid.dirフォルダとexamples.dirフォルダが含まれているはずです。

+0

答えは、私はちょうどページ番号を必要とするそこにあるので、もし私が、マスタリングにCMakeのコピーを持っています。 – slaughter98

答えて

4

エラーは、あなたが使用している方法でadd_subdirectoryです。 CMake Docsから:あなたはadd_subdirectory二つの引数を与えたときに

add_subdirectory

([binary_dir] [EXCLUDE_FROM_ALL] SOURCE_DIR)だから、最初は、このディレクトリとしてソースディレクトリとして解釈され、第二れますソースを構築する必要があります。何をしたい

は二回add_subdirectoryを呼び出すことです:

add_subdirectory(examples) 
add_subdirectory(Grid) 
+0

ありがとう、それは愚かな間違いでした。 – slaughter98

+0

あなたは歓迎です。私の答え以外にチェックマークが付いていれば、答えにチェックを入れてください。 – Kleist

関連する問題