2011-08-17 13 views
7

解決策の中で自分のコードの構成に関してCMakeに問題があります。 私はそれぞれのディレクトリを作成して自分の名前空間を整理する習慣を持っています。CMakeを使用してファイルを整理する方法は?

namespace test { namespace blabla { ... } } 

私は、ディレクトリのテストを作成し、その内部のディレクトリblablaが、しかし、CMakeのは彼らが私のVisual StudioやXcodeプロジェクトに表示させない:例えば 私はこのようなものを作成する場合。

完了するためのトリックはありますか?

+0

あなたのプロジェクトには何が表示されますか?ファイル?フォルダ? – Philipp

+0

その中のフォルダとファイル。 – lollancf37

+0

と(どのように)それらを追加しようとしましたか? – Philipp

答えて

11

source_groupコマンドを試してみてください。 add_executableを呼び出した後例えば、あなたが望むようにプロジェクトを構成するsource_groupステートメントを追加します。:Visual Studio用

source_group("test\\blabla" FILES file1.cpp file2.cpp) 
+0

それはトリックを行うようだ!ありがとうございました。しかし、私はちょうど "blabla"フォルダを取得し、 "blabla"というフォルダを "test"フォルダには入れません。何か案が ? – lollancf37

+0

ネストされたソースグループ(バックスラッシュを使用)は、CMake 2.8.5およびVisual Studio 2008 Proで動作します。 – sakra

+0

私はまだXcodeではなく、まだテストしていません。私はあなたの投稿を続けます。再度、感謝します ! – lollancf37

2

を:すべてのファイル名が一意であることを確認してください。 dir/file.cppをコンパイルした結果はobj/file.objになります。コンパイラがotherdir/file.cppをコンパイルすると、結果はobj/file.objになります - 以前のオブジェクトファイルは、に上書きされます。これはVS 2008とそれ以前のバージョンのケースであり、VS 2010でもそうだと思われます。

私もあなたのやり方でソースコードを整理します。私は、次の命名体系を使用して終了しました。ソースファイルへのパスがDir/Subdir/AnotherSubDir/File.cppの場合、ファイル名はDir/Subdir/AnotherSubdir/DirSubdirAnotherSubdirFile.cppとなります。醜い?はい。しかし、それはリンクされないプロジェクトを打ち負かし、ファイル名がどんなものであるべきかを理解するのは簡単です。私はあなたがファイルにシーケンス番号を付けることができると思うが、それは醜いと思った。また、ファイル名を一意にすることを忘れてしまった場合でも、そのエラーが明らかになるわけではありません。特に、あなたが疲れている、とあなたの婚約者/妻はあなたがCMakeの中でこの方法を使用することができますVSでプロジェクトをグループ化するための...

+0

私はあなたが言っていることを得るが、私はこの問題はしなかったが、それはおそらく起こるので、心に留めておく。ありがとう – lollancf37

+0

申し訳ありませんが、トピックを少しオフになっているが、私はあなたに頭をアップする必要があると思った。乾杯! –

4

を待っている(版の後2.8.3)

//turn on using solution folders 
set_property(GLOBAL PROPERTY USE_FOLDERS ON) 

//add test projects under 1 folder 'Test-projects' 
FOREACH(TEST ${TESTS_LIST}) 
    add_test(NAME ${TEST} COMMAND $<TARGET_FILE:${TEST}>) 
    set_tests_properties(${TEST} PROPERTIES TIMEOUT 1) 
    set_property(TARGET ${TEST} PROPERTY FOLDER "Test-projects") 
ENDFOREACH(TEST) 
+0

小さなサイドノート:Visual Studio Expressは、USE_FOLDERSを最初に設定する必要がある理由のフォルダをサポートしていません – Infinite

-2

受け入れソリューション簡単な回避策がある、しかし、Xcodeの6のようXcodeのために動作しません:

  1. は、Xcodeプロジェクト (その後、「参照を削除」選択、サイドバーにそれらを削除)からソースファイルへの参照を削除します。
  2. ルートフォルダを追加して、[グループを作成]がオンになっていることを確認し、希望のターゲットを に選択します。

多田!これで、ファイルはFinderのフォルダ構造と一致するはずです。

関連する問題