CMakeエラー:「インクルードはロードファイルGoogleTestを見つけることができませんでした」

Daniil Vorobeyv

CMakeLists.txtにgoogletestsを追加する際に問題が発生しました。

問題は「Error:includeがロードファイルを見つけることができませんでした:GoogleTest」です。

次のコマンドを使用してGoogleテストをインストールしました。

  1. sudo apt-get install libgtest-dev
  2. sudo apt-get install cmake#install cmake
  3. cd / usr / src / gtest
  4. sudo cmake CMakeLists.txt
  5. sudo make
  6. sudo cp * .a / usr / lib

私がここから取ったこれらのコマンド私のCMakeLists.txtがあります:

cmake_minimum_required(VERSION 3.6.2)

set(CMAKE_CXX_COMPILER clang++)
set(CMAKE_CXX_STANDARD 17)

project(compiler)

include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR})

find_package(FLEX REQUIRED)
FLEX_TARGET(lexer src/lexer.fl ${CMAKE_CURRENT_BINARY_DIR}/lexer.cpp)

find_package(GTest REQUIRED)
include(GoogleTest) <- There is a problem!
add_executable(run_tests src/tests/test.cpp src/main.h ${FLEX_lexer_OUTPUTS})
target_include_directories(run_tests PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(run_tests ${GTEST_LIBRARIES} stdc++fs)
#gtest_add_tests(TARGET run_tests)

add_executable(compiler src/main.h src/main.cpp src/common.h ${FLEX_lexer_OUTPUTS})

アドバイスをいただければ幸いです!

銀河

すでにlibgtestをインストールしている場合は、CMakeLists.txtに次を追加するだけです。

target_link_libraries($YOUR_TARGTET gtest)

だが!複雑すぎたと思います。

サードパーティのライブラリとして、googletestのソースコードをプロジェクトに直接含めることをお勧めします。私はここと後にこのようにここに行きます。

コード例に「apt-get」を使用しているので、DebianまたはDebianの子孫を使用していると思います。まあ、当然のことながら、実際にはどのOSを使用しているかは関係ありません。

googletestのソースコード(リンクについては前を確認)をプロジェクトに複製し、メインのCMakeLists.txtに以下を追加します。

add_subdirectory(googletest)

gtestが必要になるサブcmakeプロジェクトに以下を追加します。

include_directories(${PARENT_PATH_OF_GTEST}/googltest/googltest/include)
# ...
target_link_libraries($YOUR_TARGET gtest)

例えば

次の構造のプロジェクトがあるとします。

.
├── assets
│   └── ...
├── bin
│   ├── CMakeLists.txt
│   └── ...
├── CMakeLists.txt       <== Your main CmakeLists.txt
├── src
│   ├── CMakeLists.txt
│   └── ...
├── tests                <== Test cases
│   ├── CMakeLists.txt
│   └── ...
└── third_party
    ├── CMakeLists.txt
    ├── googletest       <=== gtest
    └── ...

メインのCMakeLists.txtには、次のものが含まれている必要があります。

add_subdirectory(tests)
add_subdirectory(third_party)
# ...

third_party CMakeLists.txtの場合:

add_subdirectory(googletest)
# ...

テストではCMakeLists.txt:

include_directories(${CMAKE_SOURCE_DIR}/third_party/googltest/googltest/include)
# ...
add_executable(my_test...)
target_link_libraries(my_test gtest)
# ...

より良い例

JetbrainsのCLionでのGtestのビデオ例を次に示します。CLionは実際にはCMakeをベースにしているため、GTestをCMakeに統合する方法も明確に示しています。

CLionでのGoogleTestのサポート

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

CMakeエラー:インクルードはロードファイルを見つけることができませんでした

分類Dev

CMakeはBoostを見つけましたが、Makeはインクルードファイルを見つけることができません

分類Dev

Jarファイルをロードまたはメインクラスを見つけることができませんでした

分類Dev

ログファイルは望ましい結果を与えていません、コードでエラーを見つけることができません

分類Dev

ゴーラン/ビルドは、ソースファイルを見つけることができません

分類Dev

CMakeはサブフォルダーからインクルードファイルを見つけることができません

分類Dev

このエラーが発生し続けるファイルをダウンロードできませんエラー404:見つかりません

分類Dev

アップグレード後、プロジェクトはリソースファイルRを見つけることができませんでしたが、アプリを実行してもエラーは表示されません。の解き方

分類Dev

Arduino Sublime Text 2.コンパイルはできますが、アップロードできません。エラー「システムは指定されたファイルを見つけることができません」

分類Dev

アンドロイドルーム、ライブラリのエラー:フィールドのgetterを見つけることができません

分類Dev

レールはプロファイルを見つけることができませんでした

分類Dev

CMakeがCUDAを見つけることができません: "cmakeモジュールファイルが見つかりませんでした:CMakeDetermineCUDACompiler.cmake"

分類Dev

IntelliJのアーティファクトのJARファイルは:見つけるか、メインクラスをロードできませんでした。

分類Dev

PHPComposerが自動ロードされたファイルを見つけることができません

分類Dev

エラー:メインクラスを見つけるか、ロードできませんでした - .jarファイルの実行を

分類Dev

VirtualBoxはロードする.efiファイルを見つけることができません

分類Dev

インクルードファイルエラーを開くことはできませんが、ファイルを見つけることができます

分類Dev

ソケットはフロントエンドでソースファイルを見つけることができません

分類Dev

ソリューションでのドライバーの展開中にエラーが発生したドライバーのテスト:システムが指定されたファイルを見つけることができません

分類Dev

Visual Studio C ++プログラムは、指定されていてもインクルードフォルダーを見つけることができません

分類Dev

massif-visualizerの構築:includeはロードファイルCMakeFindDependencyMacroを見つけることができませんでした

分類Dev

Erlangコンパイラがインクルードファイルtest.hrlを見つけることができません

分類Dev

WARファイルは:見つけるか、メインクラスをロードしますが、それはありませんでした。

分類Dev

Codeblocksは、「入力したパスは有効のようですが、このウィザードは次のSDLのインクルードファイルを見つけることができません:SDL / SDL.h?」と述べています。

分類Dev

デプロイメントマシンで「オブジェクトを作成できません。システムは指定されたファイルを見つけることができません」というエラーを調査する方法

分類Dev

cmakeは間違ったファイル名を探すため、ブーストライブラリを見つけることができません

分類Dev

MVC4プロジェクトのデプロイ中にエラーが発生しました:ファイルまたはアセンブリを見つけることができません

分類Dev

Jekyllはコレクション内からインクルードファイルを見つけることができません

分類Dev

Hibernate Searchにインデックスが埋め込まれたプログラムによるマッピングでは、フィールドエラーを見つけることができません

Related 関連記事

  1. 1

    CMakeエラー:インクルードはロードファイルを見つけることができませんでした

  2. 2

    CMakeはBoostを見つけましたが、Makeはインクルードファイルを見つけることができません

  3. 3

    Jarファイルをロードまたはメインクラスを見つけることができませんでした

  4. 4

    ログファイルは望ましい結果を与えていません、コードでエラーを見つけることができません

  5. 5

    ゴーラン/ビルドは、ソースファイルを見つけることができません

  6. 6

    CMakeはサブフォルダーからインクルードファイルを見つけることができません

  7. 7

    このエラーが発生し続けるファイルをダウンロードできませんエラー404:見つかりません

  8. 8

    アップグレード後、プロジェクトはリソースファイルRを見つけることができませんでしたが、アプリを実行してもエラーは表示されません。の解き方

  9. 9

    Arduino Sublime Text 2.コンパイルはできますが、アップロードできません。エラー「システムは指定されたファイルを見つけることができません」

  10. 10

    アンドロイドルーム、ライブラリのエラー:フィールドのgetterを見つけることができません

  11. 11

    レールはプロファイルを見つけることができませんでした

  12. 12

    CMakeがCUDAを見つけることができません: "cmakeモジュールファイルが見つかりませんでした:CMakeDetermineCUDACompiler.cmake"

  13. 13

    IntelliJのアーティファクトのJARファイルは:見つけるか、メインクラスをロードできませんでした。

  14. 14

    PHPComposerが自動ロードされたファイルを見つけることができません

  15. 15

    エラー:メインクラスを見つけるか、ロードできませんでした - .jarファイルの実行を

  16. 16

    VirtualBoxはロードする.efiファイルを見つけることができません

  17. 17

    インクルードファイルエラーを開くことはできませんが、ファイルを見つけることができます

  18. 18

    ソケットはフロントエンドでソースファイルを見つけることができません

  19. 19

    ソリューションでのドライバーの展開中にエラーが発生したドライバーのテスト:システムが指定されたファイルを見つけることができません

  20. 20

    Visual Studio C ++プログラムは、指定されていてもインクルードフォルダーを見つけることができません

  21. 21

    massif-visualizerの構築:includeはロードファイルCMakeFindDependencyMacroを見つけることができませんでした

  22. 22

    Erlangコンパイラがインクルードファイルtest.hrlを見つけることができません

  23. 23

    WARファイルは:見つけるか、メインクラスをロードしますが、それはありませんでした。

  24. 24

    Codeblocksは、「入力したパスは有効のようですが、このウィザードは次のSDLのインクルードファイルを見つけることができません:SDL / SDL.h?」と述べています。

  25. 25

    デプロイメントマシンで「オブジェクトを作成できません。システムは指定されたファイルを見つけることができません」というエラーを調査する方法

  26. 26

    cmakeは間違ったファイル名を探すため、ブーストライブラリを見つけることができません

  27. 27

    MVC4プロジェクトのデプロイ中にエラーが発生しました:ファイルまたはアセンブリを見つけることができません

  28. 28

    Jekyllはコレクション内からインクルードファイルを見つけることができません

  29. 29

    Hibernate Searchにインデックスが埋め込まれたプログラムによるマッピングでは、フィールドエラーを見つけることができません

ホットタグ

アーカイブ