2017-12-19 5 views
0

QT 5.5 라이브러리를 사용하는 프로젝트를 빌드하려고합니다. CMake 파일을 만들려면 cmake-gui를 사용하고 라이브러리에 연결해야합니다. 기본적으로이 프로그램은 프로젝트를 QT 4.X의 파일 및 디렉토리에 연결하며 QT 5.5 내에서 동일한 파일 및 디렉토리를 찾습니다 , 나는 그들 중 일부는 존재하지 않는다는 것에 주목한다.QT 5.5를 cmake-gui와 프로젝트에 연결하십시오.

그것은 QT 4.x 및 QT에 링크 된 파일이 있다고 여기를 참조하는 것이 가능하다 (인쇄에 따라) 당신은 메이크업이 명령은 설치 사용하려고, 파일을 구축 할 수 있지만 5.5

QT 4.X 파일로 대체 된 QT 5.5 아카이브가 없기 때문에 이러한 오류가 정확하게 발생한다고 가정합니다.

이들은 내가 그 더 이상이 거기있는 방법으로 누락 된 파일 디렉토리를 링크 할 수있는 방법이어야보고 시작 내가 여기

를 해결하기 위해 노력하고있어 오류가 있습니다

errorsQT의 종류 나는의 수동 생성 된 파일의 포함 디렉토리를 변경하려고하지만 오류 generated.Is의 수를 주어, 가능하지 않는 것 QT 5.5 버전에서 누락 된 파일을 "대체"할 수있는 방법이 있습니까?

project(PacpusSensors) 
cmake_minimum_required(VERSION 2.8) 

# ======================================== 
# PacpusSensors version 
# ======================================== 
set(PacpusSensors_MAJOR_VERSION 0) 
set(PacpusSensors_MINOR_VERSION 1) 
set(PacpusSensors_PATCH_VERSION 1) 
set(PacpusSensors_VERSION 
    "${PacpusSensors_MAJOR_VERSION}.${PacpusSensors_MINOR_VERSION}.${PacpusSensors_PATCH_VERSION}") 

# ======================================== 
# Configure CMake 
# ======================================== 
set(PACPUS_ROOT "/home/marvsdd/PACPUS/export") 
if(NOT ${PACPUS_ROOT} STREQUAL "") 
    set(CMAKE_MODULE_PATH ${PACPUS_ROOT}/cmake) 
    string (REPLACE "\\" "/" CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}) 
    message (STATUS "setting CMAKE_MODULE_PATH to: " ${CMAKE_MODULE_PATH}) 
elseif(NOT $ENV{PACPUS_ROOT} STREQUAL "") 
    set(PACPUS_ROOT $ENV{PACPUS_ROOT}) 
    set(CMAKE_MODULE_PATH $ENV{PACPUS_ROOT}/cmake) 
    string (REPLACE "\\" "/" CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}) 
    message (STATUS "setting CMAKE_MODULE_PATH to: " ${CMAKE_MODULE_PATH}) 
    message (STATUS "PACPUS_ROOT is: " ${PACPUS_ROOT}) 
else() 
    message (FATAL_ERROR "Environment variable PACPUS_ROOT not set, please define it in your operating system or pass it as argument to the cmake command") 
endif() 

include(${CMAKE_MODULE_PATH}/PacpusUtilities.cmake) 
include(${CMAKE_MODULE_PATH}/PacpusConfiguration.cmake) 
include(${CMAKE_MODULE_PATH}/PacpusDependencies.cmake) 
include(${CMAKE_MODULE_PATH}/PacpusPlatforms.cmake) 

# ======================================== 
# Pre-configuration of the compiler 
# ======================================== 
find_package(Pacpus REQUIRED) 
# Includes directories 
if(PACPUS_FOUND) 
include_directories(
    ${PACPUS_DEPENDENCIES_INC} 
    ${PACPUS_INCLUDE_DIR} 
) 
# Compiler flags coming from PacpusDependencies and PacpusPlatforms 
add_definitions(${PACPUS_DEFINITIONS}) 
endif(PACPUS_FOUND) 


# ======================================== 
# Find dependencies 
# ======================================== 
find_package(Qt4 REQUIRED) 
if(QT4_FOUND) 
    set(QT_USE_QTNETWORK TRUE) 
    set(QT_USE_QTOPENGL TRUE) 
    set(QT_USE_QTXML TRUE) 
    include(${QT_USE_FILE}) 
    add_definitions(${QT_DEFINITIONS}) 
    add_definitions(-DQT_PLUGIN) 
endif(QT4_FOUND) 

include_directories(
    ${PACPUS_DEPENDENCIES_INC} 
    ${PACPUS_INCLUDE_DIR} 
    ${PACPUS_INCLUDE_HINT} 
    ${PACPUS_INCLUDE_HINT}/Pacpus 
    ./PACPUS/include 
) 

# ======================================== 
# Build the PacpusSensors' modules 
# ======================================== 
add_subdirectory(PacpusSocket) 
add_subdirectory(Sick) 

# ======================================== 
# Summary 
# ======================================== 
pacpus_info("") 
pacpus_info("=====================================================================") 
pacpus_info("Configuration for PacpusSensors ${PacpusSensors_VERSION}") 
pacpus_info("=====================================================================") 
pacpus_info("") 
pacpus_info(" Platform:") 
pacpus_info(" Host:" ${CMAKE_HOST_SYSTEM_NAME} ${CMAKE_HOST_SYSTEM_VERSION} ${CMAKE_HOST_SYSTEM_PROCESSOR}) 
if(CMAKE_CROSS_COMPILING) 
    pacpus_info(" Target:" ${CMAKE_SYSTEM_NAME} ${CMAKE_SYSTEM_VERSION} ${CMAKE_SYSTEM_PROCESSOR}) 
endif() 
pacpus_info(" CMake:" ${CMAKE_VERSION}) 
pacpus_info(" CMake generator:" ${CMAKE_GENERATOR}) 
pacpus_info(" CMake build tool:" ${CMAKE_BUILD_TOOL}) 
if(MSVC) 
    pacpus_info(" MSVC:" ${MSVC_VERSION}) 
else() 
    pacpus_info(" Configuration:" ${CMAKE_BUILD_TYPE}) 
endif() 
pacpus_info("") 
pacpus_info(" Compiler:") 
pacpus_info(" C++ Compiler:" ${CMAKE_CXX_COMPILER}) 
pacpus_info(" C++ flags (release):" ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELEASE}) 
pacpus_info(" C++ flags (debug):" ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_DEBUG}) 
pacpus_info("") 
pacpus_info(" Pacpus:") 
pacpus_info(" PacpusFramework path:" ${PACPUS_ROOT}) 
pacpus_info(" Log4cxx logging enabled:" ${PACPUS_USE_LOG}) 
pacpus_info("") 
if("${CMAKE_CURRENT_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_BINARY_DIR}") 
    message(WARNING "The source directory is the same as build directory. \"make clean\" may damage the source tree") 
endif() 
+0

'나는 이러한 오류가 정확하게 때문에 QT 4.X의 files.'로 대체 QT 5.5 아카이브의 부족으로 발생한다고 가정 체크 아웃 - **에 대한 오류 메시지가 없습니다 파일 누락 **. 하지만 "Qt에서 Qt4 및 Qt5 헤더 파일을 혼합 할 수있는"토큰 앞에 누락 된 이항 연산자의 이유는. 스택 오버플로 [규칙] (https : // stackoverflow.co.kr/help/on-topic), 오류 메시지는 이미지 **가 아닌 텍스트 **로 질문 게시물에 포함되어야합니다. – Tsyvarev

+0

쉐이크 파일은 무엇입니까? – Adam

+0

그래서 Tsyvarev는 터미널에 액세스 할 때까지 오류를 텍스트로 저장할 수 없었습니다. 그 때문에 게시물이 삭제되지 않기를 바랍니다. 오류가 다시 발생하지는 않습니다. 게다가, 나는이 프로젝트를 잘못 만들고 있다고 생각한다. 그러나 내가 액세스 할 수있는 QT 5.5에 파일이 누락되었다고 가정 할 수 있습니까? 이 경우 원본 파일을 제공 한 사람에게이 문제와 관련하여 문의 할 것입니다. 그런데 * qmake -v *를 사용하면 _version 4.8.X_이됩니다. –

답변

0

내가보고 가장 먼저하는 일이 QT4와 Qt5 여기에 혼합되는 점이다

이이 프로젝트에 사용되는 CMakeLists.txt 파일입니다. 두 가지를 모두 설치했는데 올바른 것을 사용해야합니다. Qt5를 원한다고 가정합니다.

Qt5에 연결하는 간단한 예는 다음과 같다 : 패키지가 QT를 찾을 수 없습니다 경우이 오류와 함께 실패합니다 의미 REQUIRED 때문에 당신은 if(Qt5_FOUND) 필요하지 않습니다

find_package(Qt5 REQUIRED Network OpenGL Xml) #Qt5Core is implicit 
target_link_libraries(MyApplication Qt5::Network Qt5::OpenGL Qt5::Xml) 

.

CMakeLists.txt에 정의 된 대상이 없습니다. 일반적으로 add_executable, add_library 또는 add_custom_target cmake 기능을 사용하면됩니다. 이는 대상이 아마도 하위 디렉토리에 정의되어 있음을 의미합니다. 하위 디렉토리에서 적절한 CMakeLists.txt를 찾아 거기에 target_link_libraries 명령을 사용하십시오. 이 명령은 올바른 헤더를 추가하고 적절한 링크를 수행합니다. 다음 일하는 것이 글로벌 include_directories()add_definitions()를 사용하지만 Qt는에 응용 프로그램을 연결해야하는 것 때문에, 당신이 실제로 솔루션에 target_link_libraries() 깊은 아래로 사용할 필요가

Qt는이 경우 헤더 전용.

자세한 내용은 Qt's documentation

관련 문제