CMake只接受add_subdirectory中的`find_package(Qt5Widgets REQUIRED)`,而不是root项目

时间:2016-07-18 18:07:06

标签: c++ qt cmake

上下文

使用下面的CMakeLists.txt,它构建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" )

一旦我尝试独立构建“TestQt”项目,它就会返回如下错误:

  

CMakeLists.txt处的CMake错误:16(find_package):未提供   这个项目问CMAKE_MODULE_PATH中的“FindQt5Widgets.cmake”   CMake查找“Qt5Widgets”提供的包配置文件,   但是CMake没有找到一个。

     

找不到“Qt5Widgets”提供的包配置文件   具有以下任何名称:

     

Qt5WidgetsConfig.cmake /   qt5widgets-config.cmake

     

将“Qt5Widgets”的安装前缀添加到CMAKE_PREFIX_PATH或   将“Qt5Widgets_DIR”设置为包含上述其中一个的目录   文件。如果“Qt5Widgets”提供单独的开发包或   SDK,请确保已安装。

CMAKE_PREFIX_PATH在两种情况下都是空的。

目前正在使用Debian和稍微旧的CMAKE 3.0.2

问题

有什么不对/遗失?

的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 个答案:

答案 0 :(得分:2)

find_package需要project才能正常运作。将project("TestQt")行移至cmake_minimum_required后面的文件顶部。