2016-07-18 2 views
0

コンテキストCMakeのが唯一の `add_subdirectoryではなく、ルートプロジェクトに` find_package(Qt5Widgets REQUIRED)を受け入れて

、それは次のように親プロジェクトに含まれた場合にのみ問題なくQtテストプロジェクトをビルドする:

RootProject 
    +--CMakeLists.txt  // Parent CMake 
    +--TestQt 
     +--testwidget.cpp 
     +--testwidget.hpp // Empty class, just extends QWidget 
     +--CMakeLists.txt // My Test Project CMake 

親プロジェクトだけ含まれています

add_subdirectory("TestQt") 

CMakeLists.txtでCMakeのエラー:16(find_package):CMAKE_MODULE_PATHに 「FindQt5Widgets.cmake」を提供しないことによりできるだけ早く私は「TestQt」プロジェクトをスタンドアロンで構築しようとして、それだけのようなエラーを返しますこのプロジェクトは CMakeに、 "Qt5Widgets"、 で提供されているパッケージ構成ファイルを検索するよう依頼しましたが、CMakeは見つけませんでした。

Qt5WidgetsConfig.cmake/ qt5widgets-config.cmake

「Qt5Widgets」のインストール接頭辞を追加します。

は、次の名前のいずれかで「Qt5Widgets」 が提供するパッケージ構成ファイルが見つかりませんでした。 CMAKE_PREFIX_PATHまたは に上記の ファイルのいずれかを含むディレクトリに "Qt5Widgets_DIR"を設定します。 「Qt5Widgets」が個別の開発パッケージまたは SDKを提供する場合は、SDKがインストールされていることを確認してください。

CMAKE_PREFIX_PATHは両方とも空です。

現在

が間違っている/何が欠けている少し古いCMAKE 3.0.2

質問でDebianを使用して?

CMakeLists.txt

cmake_minimum_required(VERSION 3.0) 

set(CMAKE_AUTOMOC ON) 
set(CMAKE_INCLUDE_CURRENT_DIR ON) 

find_package(Qt5Widgets REQUIRED) 

include_directories(${Qt5Widgets_INCLUDE_DIRS}) 
add_definitions(${Qt5Widgets_DEFINITIONS}) 
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS}") 


# Project name 
project ("TestQt") 
add_executable(UnitTest_TestQt UnitTest.cpp testwidget.cpp) 
target_link_libraries(UnitTest_TestQt Qt5::Widgets) 
+1

FindQt5Widgets.cmakeがインストールされている場所を検索し、環境変数 'CMAKE_PREFIX_PATH'と' Qt5Widgets_DIR'の内容を確認してください。 – Amadeus

+0

Qt5Widgets_DIRとの良いキャッチ:/ usr/lib/x86_64-linux-gnu/cmake/Qt5Widgets'を実行しますが、スタンドアローンでは 'Qt5Widgets_DIR-NOTFOUND'となります。あなたはなぜスタンドアロンに設定されていないのか分かりますか? –

+0

私はこの問題を調査しています。非常に奇妙なようです。 –

答えて

2

find_packageニーズprojectが正常に動作します。 project("TestQt")行をcmake_minimum_requiredの直後にファイルの先頭に移動します。

関連する問題