上下文
使用下面的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)
答案 0 :(得分:2)
find_package
需要project
才能正常运作。将project("TestQt")
行移至cmake_minimum_required
后面的文件顶部。