C++ CMake只接受add_子目录中的“find_package(需要Qt5Widgets)”,而不接受根项目中的“find_package”
上下文C++ CMake只接受add_子目录中的“find_package(需要Qt5Widgets)”,而不接受根项目中的“find_package”,c++,qt,cmake,C++,Qt,Cmake,上下文 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 "${CMA
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)
使用下面的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:16(find_包)的CMake错误:未提供
此项目要求的cmake_模块_路径中的“FindQt5Widgets.cmake”
CMake查找“Qt5Widgets”提供的包配置文件,
但科马克没有找到
找不到“Qt5Widgets”提供的包配置文件
具有以下任一名称:
Qt5WidgetsConfig.cmake/
qt5widgets-config.cmake
将“Qt5Widgets”的安装前缀添加到CMAKE_prefix_路径或
将“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)
查找包
需要项目
才能正常工作。将行project(“TestQt”)
移动到文件顶部,紧跟在cmake_minimum_required
之后find_package
需要project
才能正常工作。将行project(“TestQt”)
移动到文件顶部,在cmake_minimum_required
之后进行搜索以查找FindQt5Widgets.cmake的安装位置,并查看环境变量CMAKE_PREFIX_PATH
和Qt5Widgets_DIR
Qt5Widgets_DIR的精彩内容:/usr/lib/x86_64-linux-gnu/CMAKE/Qt5Widgets
在子项目中,但在独立项目中Qt5Widgets_DIR-NOTFOUND
。你知道为什么不在standalone中设置吗?这很令人困惑:你不应该在另一个项目中有一个项目(“TestQt”)
。据我所知,“只能有一个”项目。它必须在根目录下CMakeLists.txt
。如果它不在那里,它将被隐式添加。如果在目录层次结构中的其他CMakeLists.txt
中调用project()
,则内容会中断。我想这里显示的CMakeLists.txt中还有更多内容。错误显示它发生在第16行,但在您的CMakeLists.txt中,它发生在第6行。尝试使用此小文件并查看错误是否继续发生,然后搜索FindQt5Widgets.cmake的安装位置,并查看环境变量CMAKE_PREFIX_PATH
和Qt5Widgets_DIR
Qt5Widgets_DIR的精彩内容:/usr/lib/x86_64-linux-gnu/CMAKE/Qt5Widgets
在子项目中,但在独立项目中Qt5Widgets_DIR-NOTFOUND
。你知道为什么不在standalone中设置吗?这很令人困惑:你不应该在另一个项目中有一个项目(“TestQt”)
。据我所知,“只能有一个”项目。它必须在根目录下CMakeLists.txt
。如果它不在那里,它将被隐式添加。如果在目录层次结构中的其他CMakeLists.txt
中调用project()
,则内容会中断。我想这里显示的CMakeLists.txt中还有更多内容。错误显示它发生在第16行,但在您的CMakeLists.txt中,它发生在第6行。尝试使用这个小文件,查看错误是否继续发生