【发布时间】:2021-04-29 13:23:17
【问题描述】:
我是一名正在编写项目的学生。我创建了一个程序(这里是 SVN 的链接:https://mysvn.ru/Ilya_Antonov/antonov_sem_prj)。我使用 CMake 构建它并生成 .sln 项目。但在 Visual Studio 中运行时,出现一些错误:编译器无法打开文件“drumswindow.h”和“mainwindow.h”(致命错误 C1083)。请看一下我的 CMakeLists.txt:
cmake_minimum_required(VERSION 3.1.0)
project(MusicSimulator VERSION 1.0.0 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
if(CMAKE_VERSION VERSION_LESS "3.7.0")
set(CMAKE_INCLUDE_CURRENT_DIR ON)
endif()
find_package(Qt5 COMPONENTS Gui REQUIRED)
find_package(Qt5 COMPONENTS Widgets REQUIRED)
find_package(Qt5 COMPONENTS Core REQUIRED)
find_package(Qt5 COMPONENTS Multimedia REQUIRED)
add_executable(MusicSimulator
mainwindow.ui
mainwindow.cpp
mainwindow.h
main.cpp
drumswindow.ui
drumswindow.cpp
drumswindow.h
keyswindow.ui
keyswindow.cpp
keyswindow.h
images.qrc
drumres.qrc
keysres2.qrc
keysres3.qrc
keysres4.qrc
keysres5.qrc
keysres6.qrc
)
target_link_libraries(MusicSimulator Qt5::Widgets Qt5::Gui Qt5::Core Qt5::Multimedia)
我在这里做错了什么?
【问题讨论】:
-
无论 CMake 版本如何,您都应该启用
set(CMAKE_INCLUDE_CURRENT_DIR ON)。 -
#include <drumswindow.h>应该是#include "drumswindow.h"尽管两者都可以。我相信的区别是#include "drumswindow.h"首先搜索与源文件相同的目录。但是规则是实现定义的。 -
非常感谢!
标签: c++ visual-studio qt cmake cross-platform