[解決済み】CMakeでインクルードディレクトリを正しく追加する方法
質問
1年ほど前、私は次のような質問をしました。 ヘッダーの依存性 .
最近気づいたのですが、どうやらCMakeがこれらのヘッダーファイルを 外部 をプロジェクトに追加しました。少なくとも、Code::Blocksプロジェクトを生成するとき、ヘッダーファイルはプロジェクト内に表示されません(ソースファイルは表示されます)。したがって、CMakeはこれらのヘッダを次のように考えているようです。 外部 をプロジェクトに追加し、依存関係で追跡しないようにしました。
CMake のチュートリアルで検索しても、次のようなものしかヒットしません。
include_directories
というのは、私の希望通りにはいかないようです...。
特定のディレクトリに含まれるべきヘッダーがあり、それらのヘッダーが生成されたMakefileによって追跡されるべきであることをCMakeに知らせる適切な方法は何でしょうか?
どのように解決するのですか?
2つのことが必要です。
まず、インクルードするディレクトリを追加します。
target_include_directories(test PRIVATE ${YOUR_DIRECTORY})
をサポートしていない非常に古い CMake バージョン (2.8.10 またはそれ以前) で行き詰っている場合、以下のようにします。
target_include_directories
を使用することもできます。
include_directories
の代わりに
include_directories(${YOUR_DIRECTORY})
それから、例えば現在のターゲットのソースファイルのリストにヘッダーファイルも追加する必要があります。
set(SOURCES file.cpp file2.cpp ${YOUR_DIRECTORY}/file1.h ${YOUR_DIRECTORY}/file2.h)
add_executable(test ${SOURCES})
こうすることで、ヘッダーファイルはMakefileの依存ファイルとして表示され、また、例えばVisual Studioプロジェクトを生成した場合、そのプロジェクトにも表示されるようになります。
それらのヘッダーファイルを複数のターゲットに使用する方法。
set(HEADER_FILES ${YOUR_DIRECTORY}/file1.h ${YOUR_DIRECTORY}/file2.h)
add_library(mylib libsrc.cpp ${HEADER_FILES})
target_include_directories(mylib PRIVATE ${YOUR_DIRECTORY})
add_executable(myexec execfile.cpp ${HEADER_FILES})
target_include_directories(myexec PRIVATE ${YOUR_DIRECTORY})
関連
-
[解決済み】C++エラー。アーキテクチャ x86_64 に対して未定義のシンボル
-
[解決済み】Visual Studio 2015で「非標準の構文。'&'を使用してメンバーへのポインターを作成します」エラー
-
[解決済み】C++コンパイルタイムエラー:数値定数の前に期待される識別子
-
[解決済み】オブジェクト引数のない非静的メンバ関数の呼び出し コンパイラーエラー
-
[解決済み】C++の余分な資格エラー
-
[解決済み] gdbを使用してもデバッグシンボルが見つからない
-
[解決済み】 while(cin) と while(cin >> num) の違いは何ですか?)
-
[解決済み】システムが指定されたファイルを見つけられませんでした。
-
[解決済み】デバッグアサーションに失敗しました
-
[解決済み】c++で.txtファイルから2次元の配列に読み込む
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++でint型に無限大を設定する
-
[解決済み】クラステンプレートの引数リストがない
-
[解決済み] [Solved] Error C1083: Cannot open include file: 'stdafx.h'
-
[解決済み】関数名の前に期待されるイニシャライザー
-
[解決済み】テンプレートの引数1が無効です(Code::Blocks Win Vista) - テンプレートは使いません。
-
[解決済み】fpermissiveフラグは何をするのですか?
-
[解決済み】オブジェクト引数のない非静的メンバ関数の呼び出し コンパイラーエラー
-
[解決済み】エラー:不完全な型へのメンバーアクセス:前方宣言の
-
[解決済み】標準ライブラリにstd::endlに相当するタブはあるか?
-
[解決済み】システムが指定されたファイルを見つけられませんでした。