현재 QMake에서 CMake로 프로젝트를 옮기고 있습니다. Qt UIC가 처리하고자하는 실제 파일 대신 존재하지 않는 ui 파일을 처리하려고 할 때 문제가 있습니다.CMake Qt UIC가 실패했습니다
나는 다음과 같은 구조를 여기
.
|___ CMakeLists.txt
|___ MyProject.pro
|___ mainwindow.ui
|___ resource.qrc
|___ source
| |___ mainwindow.cpp
| |___ *.cpp
|___ include
| |___ mainwindow.h
| |___ *.h
그리고이 나의 cmake
cmake_minimum_required(VERSION 3.2)
# Project name
project(project)
# Tell CMake to compile with C++11
set(CMAKE_CXX_STANDARD 11)
# Tell CMake to run moc when needed.
set(CMAKE_AUTOMOC ON)
# Tell CMake to run uic when needed.
set(CMAKE_AUTOUIC ON)
# Tell CMake to run rcc when needed
set(CMAKE_AUTORCC ON)
# Moc generated files are located in the current dir so we need to tell CMake to look for them.
set(CMAKE_INCLUDE_CURRENT_DIR ON)
# Find Qt5
find_package(Qt5 COMPONENTS Widgets Core Gui OpenGL REQUIRED)
# Add Qt5 definitions and includes to build libraries.
# Widgets add Widgets Core and Gui
add_definitions(${Qt5Widgets_DEFINITIONS})
include_directories(${Qt5Widgets_INCLUDES})
add_definitions(${Qt5OpenGL_DEFINITIONS})
include_directories(${Qt5OpenGL_INCLUDES})
# Find OpenGL
find_package(OpenGL REQUIRED)
# Set include directories
include_directories(${CMAKE_SOURCE_DIR}/include
# Use Qt5 ressources
set(RESOURCE resources.qrc)
# Use Qt5 ui
set(UI mainwindow.ui)
# Adding sources
set(SOURCES
source/main.cpp
source/mainwindow.cpp
source/octree.cpp
source/mesh.cpp
source/pgm3d.cpp
source/glwidget.cpp
source/camera.cpp
source/scene.cpp
source/light.cpp
source/obj.cpp
source/alignedbox3f.cpp
source/wireboundingbox.cpp
include/mainwindow.h
include/utils.h
include/octree.h
include/mesh.h
include/pgm3d.h
include/glwidget.h
include/camera.h
include/scene.h
include/model3d.h
include/light.h
include/obj.h
include/alignedbox3f.h
include/wireboundingbox.h)
add_executable(${PROJECT_NAME} ${UI} ${RESOURCE} ${SOURCES})
target_link_libraries(${PROJECT_NAME} ${Qt5Widgets_LIBRARIES} ${Qt5OpenGL_LIBRARIES} ${OPENGL_LIBRARIES})
입니다 그리고 나는 다음과 같은 오류가있어 :
File '/*/project/source/mainwindow.ui' is not valid
AUTOUIC: error: process for ui_mainwindow.h needed by
"/*/project/source/mainwindow.cpp"
failed:
File '/*/project/source/mainwindow.ui' is not valid
이 에러가 완벽하게 논리적입니다 내 원본 폴더에 ui 파일이 없습니다. 나는 autouic을 사용하는 대신에 ui를 감싸려고했는데, 역시 작동하지 않았다. #include "ui_*.h"
를 같은 UI를 파일의 포함을 위해 AUTOUIC
속성 CMake 것 스캔 소스 파일을 활성화 (-
시도를 :
당신을위한 또 다른 옵션은
AUTOUIC
을 해제하고 UI 파일의 전체 경로로qt5_wrap_ui
을 사용하는 것입니다. 또한 프로젝트 디렉토리에 오브젝트 파일을 넣지 않는 것이 좋습니다. 청소해라. – Joel이미 모든 것을 정리하려고 시도했지만 작동하지 않았습니다. – Nico