2016-07-11 16 views
2

CMakeの最初のタイマー。私は現在、CMakeでVisual Studio 2013ソリューション(プロジェクト)を作成しようとしています。CakeプロジェクトでCMakeインクルードディレクトリと環境変数

私は2つの問題に直面しています。

まず最初に、私は自分のルートcMakeLists.txtにinclude_directoryを使用していますが、VC++のディレクトリタブに含まれるディレクトリの代わりに、C/C++ - > General - > Additional includeディレクトリに含まれています。

2番目の問題は、環境変数を使用してこれらのディレクトリをインクルードすることですが、$(myVar)/ lib/incのようにAdditionalインクルードディレクトリに出力する代わりに、C :/../ lib/inc)、エンドユーザーはもちろん私と同じパスを持つことはありません。

お返事ありがとうございます。

+0

あなたは間違いなく正しいと思います。 – Davelis4

+1

あなたはCMakeがジェネレータであることを理解する必要があるので、生成されたVisual Studioソリューションを共有する必要はなく、CMakeLists.txtのディレクトリと他のユーザだけがあなたのCMakeLists.txtを使ってCMakeで独自のソリューションを生成します。生成されたソリューションのパスについて悩む必要はありません。 – AnatolyS

+0

あなたの答えは第2の問題についてのもので、それはフレームワークなので、私はエンドユーザーにCMakeを使用するつもりはないと思います。エンドユーザーに解決策を受け取り、それに取り組んでもらいたい。 : – Davelis4

答えて

1

私はCMakeがどのように動作するかをより深く理解するために、あなたの質問に答えようとします。 >一般 - - 私は私のルートcMakeLists.txtでinclude_directoriesを使用する代わりに、ディレクトリの彼らはC/C++の下に含まれているVC++ディレクトリ]タブの下に含まれていることを

まず1です>追加は、ディレクトリが含まれます。

これは、CMakeがVisual Studioプロジェクトを生成する方法です。私はこれを変える方法を知らない。

2番目の問題は、これらのディレクトリを含めるのに環境変数を使用することですが、$(myVar)/ lib/incなどの追加インクルードディレクトリには印刷しません。例えばC:/../ lib/inc)、エンドユーザはもちろん私と同じパスを持つことはありません。

生成されたプロジェクトのあいまいさを避けるために、CMakeはすべてのパスを完全修飾パスに解決する傾向があります。これは、とりわけCMakeプロジェクトが再配置可能でないことを意味します。。これは、CMakeによって生成されたプロジェクトは、生成された後に移動することを意図しておらず、他のコンピュータで使用するために他のユーザに送信することは間違いないことを意味します。

あなたがこれを意味するもの:CMakeを使用する場合は、すべてのエンドユーザーもCMakeをインストールして使用する必要があります。これがエンドユーザにとって不可能で実用的でない場合、CMakeはこの特定のプロジェクトの解決策ではありません。

+0

お返事ありがとうございます。 – Davelis4