2016-07-10 14 views
1

cmakeは、私がこれまでに望むよりも簡単です。私は自分自身がどのように私は1つ(または複数)を作成することができ、ある尋ねるどのような瞬間に、次のプロジェクトの構造が機能するようCMakeLists.txtファイル(複数可):具体的にcmakeとQTを使って複数のプロジェクトを編成する

my workspace 
    src 
     project1 
     project2 
    build 
     project1 
     project2 

、私が判断する必要があり、次の2つの制約があります私のプロジェクト構造と私のCMakeLists.txtファイルの両方:

1)私は、ビルドだけでIDEを経由してこのプロジェクトに取り組みたいと考え、各特定のユーザのために生成する必要があり、gitのを使用してのみCMakeLists.txtと私のソースファイルをコミットしたいと思います彼の欲望のうち

2)もし誰かがクローン私のリポジトリは、彼はこのプロジェクト

3)srcディレクトリがあるべきで働くことができるように、彼/彼女が望むIDE用(/my workspace/build/project1/my workspace/build/project2)上記のようにディレクトリを構築cmakeのを実行することができますプロジェクトで作業している人なら、IDEでこれを行うことができます。srcファイルを変更してCMakeLists.txtとした後、他の人が再びチェックアウトして同じ方法で作業できるようにします

このようにコラボレーションのための巨大な利点!しかし、cmakeは、cmakeが呼び出されたディレクトリにすべてを構築しているようです。質問のための今

、:

a)に対応するビルドで私の希望のディレクトリを作成するためには、/my workspace/build/project1/my workspace/build/project2フォルダを構築し、新たからcmakeを呼び出す以外の方法はありますか?

b)コラボレーションするために別のディレクトリ構造を使用したいですか?

c)あなたがCMakeLists.txtファイルをどこに置いていますか(どこからcmakeに電話をかけていますか?)、一般的なプロセスは何ですか?

d)QTはうまく動作するように見えるmocファイルを作成します。あなたは何らかの方法でそれらをコミットするのですか、それともチェックアウトするすべての人のためのディレクトリを作成して、それらを使用できることを確認していますか?

+1

生成されたすべてのファイルをビルドフォルダに入れて、moc、...によって生成されたファイルを含みます。 – drescherjm

+0

私のビルドフォルダは、ワークスペースの下にない全く別のツリーにあります。その理由は、私はWindows上にビルドしているので、私は各ソースツリーのビルドフォルダが1つ以上あるので、1つ以上のコンパイラでプロジェクトをビルドします。 – drescherjm

答えて

0

ビルドディレクトリは決定するものではありません。他の開発者は、ビルドディレクトリを置く場所を選択します(私は「外の設定」をEclipseで持っています:https://stackoverflow.com/a/38140914/4742108)。ビルドディレクトリはリポジトリにコミットされません。

CMakeLists.txtはプロジェクトごとです。あなたは2つのプロジェクトを持っているので、CMakeの観点からは関係がありません。また、同じリポジトリにコミットする必要があるかどうかを判断する必要があります。

mocファイルはどこにもコミットされません。 *.oファイルやコンパイラが生成する中間的なもののように、各ビルドのローカルです。

+0

なぜCMakeListにサブフォルダを含めることができますか?ビルド時に2つの 'vcxproj'を使って完全に細かい' sln'となるのでしょうか? 1つのビジネスプロジェクトは、多くのC++/VC/cmakeプロジェクトで構成されていますが、私はそれに対して何も言及していません。 – IceFire

+0

私はあなたがvcxprojではなくCMakeプロジェクトについて話していると思っていました。 (CMakeプロジェクト - 'CMakeLists.txt'に' project(...) 'を書くとき) – Velkan

+0

はい、 'project(...)'は 'CMakeLists.txt'の先頭にあり、project1とproject2は'それぞれ 'add_subdirectory'を介してインクルードされています。少なくとも、これは最も直感的な組織だと思われますが、私が間違っていれば私を修正してください。私はcmakeと仕事を始めます! – IceFire

関連する問題