Windows works

This commit is contained in:
2020-09-06 21:46:22 +03:00
parent 1ea56dc594
commit 236de603e5
5 changed files with 142 additions and 53 deletions

View File

@@ -1,20 +1,25 @@
cmake_minimum_required(VERSION 3.0) cmake_minimum_required(VERSION 3.0)
project(qglengine) project(qglengine)
find_package(QAD REQUIRED) find_package(QAD REQUIRED)
set(_DOMAIN "org.SHS")
set(_COMPANY "SHS")
find_qt(Qt5 Core Gui OpenGL Xml) find_qt(Qt5 Core Gui OpenGL Xml)
if (NOT Qt5) if (NOT Qt5)
message(WARNING "Building ${PROJECT_NAME} available only on Qt5!") message(WARNING "Building ${PROJECT_NAME} available only on Qt5!")
else() else()
find_package(OpenGL REQUIRED) find_package(OpenGL REQUIRED)
set_version(qglengine include(SHSTKQtMacros)
MAJOR 1
MINOR 0 set(qglengine_MAJOR 1)
REVISION 0 set(qglengine_MINOR 0)
BUILD "${BUILD_NUMBER}" set(qglengine_REVISION 0)
SUFFIX rc set(qglengine_SUFFIX "rc")
OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/core/qglengine_version.h") set(qglengine_COMPANY SHS)
set(qglengine_DOMAIN org.SHS)
if ("x${CMAKE_MODULE_PATH}" STREQUAL "x")
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
endif()
shstk_begin_project(qglengine QGLENGINE)
qt_sources(SRC) qt_sources(SRC)
qt_sources(FSRC DIR "formats") qt_sources(FSRC DIR "formats")
@@ -25,22 +30,23 @@ else()
file(GLOB PHS "*_p.h" "formats/*_p.h" "core/*_p.h") file(GLOB PHS "*_p.h" "formats/*_p.h" "core/*_p.h")
list(REMOVE_ITEM out_HDR "${PHS}") list(REMOVE_ITEM out_HDR "${PHS}")
import_version(qglengine_core qglengine) import_version(qglengine_core qglengine)
set_deploy_property(qglengine_core SHARED set_deploy_property(qglengine_core ${qglengine_LIB_TYPE}
LABEL "QGLEngine core library" LABEL "QGLEngine core library"
FULLNAME "${_DOMAIN}.qglengine_core" FULLNAME "${qglengine_DOMAIN}.qglengine_core"
COMPANY "${_COMPANY}" COMPANY "${qglengine_COMPANY}"
INFO "QGLEngine core library") INFO "QGLEngine core library")
make_rc(qglengine_core _RC) make_rc(qglengine_core _RC)
qt_add_library(qglengine_core SHARED out_CPP ${_RC}) qt_add_library(qglengine_core ${qglengine_LIB_TYPE} out_CPP ${_RC})
qt_generate_export_header(qglengine_core) qt_generate_export_header(qglengine_core)
list(APPEND out_HDR "${CMAKE_CURRENT_BINARY_DIR}/qglengine_core_export.h") list(APPEND out_HDR "${CMAKE_CURRENT_BINARY_DIR}/qglengine_core_export.h")
qt_target_include_directories(qglengine_core PRIVATE ${QAD_INCLUDES} "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/core") list(APPEND out_HDR "${qglengine_VERSION_FILE}")
qt_target_link_libraries(qglengine_core qad_utils qad_widgets assimp ${OPENGL_LIBRARIES}) qt_target_include_directories(qglengine_core PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/core")
message(STATUS "Building QGLEngine version ${qglengine_VERSION} (SHARED)") qt_target_link_libraries(qglengine_core QAD::Widgets assimp ${OPENGL_LIBRARIES})
message(STATUS "Building QGLEngine version ${qglengine_VERSION} (${qglengine_LIB_TYPE_MSG})")
list(APPEND QT_MULTILIB_LIST qglengine_core) list(APPEND QT_MULTILIB_LIST qglengine_core)
add_subdirectory(widgets) add_subdirectory(widgets)
copy_to_parent("") shstk_copy_to_parent()
sdk_install("qglengine" FALSE "qglengine_core" "${out_HDR}" "${out_QM}") shstk_qt_install("qglengine" FALSE "qglengine_core" "${out_HDR}" "${out_QM}")
if (NOT DEFINED ANDROID_PLATFORM) if (NOT DEFINED ANDROID_PLATFORM)
if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/plugin") if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/plugin")
#add_subdirectory(plugin) #add_subdirectory(plugin)
@@ -52,4 +58,10 @@ else()
qt_add_executable(qglengine_test test_CPP) qt_add_executable(qglengine_test test_CPP)
qt_target_link_libraries(qglengine_test qglengine_core qglengine_widgets) qt_target_link_libraries(qglengine_test qglengine_core qglengine_widgets)
qt_target_include_directories(qglengine_test PRIVATE ${QAD_INCLUDES} "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/core" "${CMAKE_CURRENT_SOURCE_DIR}/widgets") qt_target_include_directories(qglengine_test PRIVATE ${QAD_INCLUDES} "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/core" "${CMAKE_CURRENT_SOURCE_DIR}/widgets")
if (NOT LOCAL)
file(GLOB CMAKES "cmake/*.cmake" "cmake/*.in")
install(FILES ${CMAKES} DESTINATION ${CMAKE_ROOT}/Modules)
endif()
endif() endif()

103
cmake/FindQGLEngine.cmake Normal file
View File

@@ -0,0 +1,103 @@
#[[
Create imported targets:
* QGLEngine::Core
* QGLEngine::Widgets
These targets include directories and dependencies
]]
cmake_policy(SET CMP0011 NEW) # don`t affect includer policies
cmake_policy(SET CMP0020 NEW) # Automatically link Qt executables to qtmain target on Windows
find_package(QAD REQUIRED)
include(QtWraps)
include(SHSTKMacros)
shstk_is_parent_exists(hasParent PARENT_DIRECTORY)
shstk_set_find_dirs(qglengine)
set(_SEARCH_DIR ${qglengine_LIBDIR})
if (NOT BUILDING_qglengine)
list(APPEND _SEARCH_DIR $ENV{SMSDK_DIR}/lib)
shstk_find_header(qglengine QGLENGINE "qglengine_version.h" "")
endif()
if(QGLENGINE_FIND_VERSION VERSION_GREATER QGLENGINE_VERSION)
message(FATAL_ERROR "QGLENGINE version ${QGLENGINE_VERSION} is available, but ${QGLENGINE_FIND_VERSION} requested!")
endif()
set(__libs "core;widgets")
set(__module_core Core )
set(__module_widgets Widgets)
foreach (_l ${__libs})
set( __inc_${_l} "")
set(__deps_${_l} "")
set(__libs_${_l} "")
endforeach()
set(__deps_core "QAD::Widgets")
set(__deps_widgets "QGLEngine::Core")
#message("find QGLEngine ${BUILDING_qglengine}")
if (BUILDING_qglengine)
if (NOT SET_TARGETS_qglengine)
set(SET_TARGETS_qglengine ON CACHE BOOL "")
#message("create aliases")
foreach(_l ${__libs})
foreach(_v ${_QT_VERSIONS_})
set(_m ${__module_${_l}})
if((NOT TARGET QGLEngine::${_m}${_v}) AND TARGET qglengine_${_l}${_v})
#message("alias QGLEngine::${_m}${_v} = qglengine_${_l}${_v}")
set(MULTILIB_QGLEngine__${_m}_SUFFIX_Qt${_v} ${_v} CACHE STRING "")
add_library(QGLEngine::${_m}${_v} ALIAS qglengine_${_l}${_v})
endif()
endforeach()
list(APPEND QT_MULTILIB_LIST QGLEngine::${_m})
endforeach()
endif()
set(QGLENGINE_FOUND ON CACHE BOOL "")
else()
#message("create interfaces")
foreach(_l ${__libs})
foreach(_v ${_QT_VERSIONS_})
set(_m ${__module_${_l}})
find_library(QGLENGINE_LIBRARY_${_l}${_v} qglengine_${_l}${_v} HINTS ${_SEARCH_DIR})
#message("found ${_l}${_v} = ${QGLENGINE_LIBRARY_${_l}${_v}} (${qglengine_INCLUDES})")
if((NOT TARGET QGLEngine::${_m}${_v}) AND QGLENGINE_LIBRARY_${_l}${_v})
#message("imported QGLEngine::${_m}${_v} = ${QGLENGINE_LIBRARY_${_l}${_v}}")
set(MULTILIB_QGLEngine__${_m}_SUFFIX_Qt${_v} ${_v} CACHE STRING "")
add_library(QGLEngine::${_m}${_v} UNKNOWN IMPORTED)
set(_deps)
foreach (_d ${__deps_${_l}})
if ((${_d} MATCHES "QAD::.*") OR (${_d} MATCHES "QGLEngine::.*"))
list(APPEND _deps ${_d}${_v})
else()
list(APPEND _deps ${_d})
endif()
endforeach()
set_target_properties(QGLEngine::${_m}${_v} PROPERTIES
IMPORTED_LOCATION "${QGLENGINE_LIBRARY_${_l}${_v}}"
INTERFACE_INCLUDE_DIRECTORIES "${qglengine_INCLUDES}"
INTERFACE_LINK_LIBRARIES "${_deps}")
endif()
endforeach()
list(APPEND QT_MULTILIB_LIST QGLEngine::${_m})
endforeach()
endif()
if(hasParent)
set(QT_MULTILIB_LIST ${QT_MULTILIB_LIST} PARENT_SCOPE)
endif()
set(QGLENGINE_FOUND ON CACHE BOOL "")

View File

@@ -79,6 +79,7 @@
#endif #endif
#include <iostream> #include <iostream>
#include "qglengine_version.h" #include "qglengine_version.h"
#include "qglengine_core_export.h"
//#ifdef WINDOWS //#ifdef WINDOWS

View File

@@ -1,27 +0,0 @@
// This file generated by CMake set_version() version 2
#ifndef QGLENGINE_QGLENGINE_VERSION_H
#define QGLENGINE_QGLENGINE_VERSION_H
// Project
#define QGLENGINE_VERSION_MAJOR 1
#define QGLENGINE_VERSION_MINOR 0
#define QGLENGINE_VERSION_REVISION 0
#define QGLENGINE_VERSION_BUILD 9999
#define QGLENGINE_VERSION_SUFFIX "rc"
#define QGLENGINE_VERSION_NAME "1.0.0_rc"
#define QGLENGINE_MAKE_VERSION(major, minor, revision) ((major << 16) | (minor << 8) | revision)
#define QGLENGINE_VERSION QGLENGINE_MAKE_VERSION(QGLENGINE_VERSION_MAJOR, QGLENGINE_VERSION_MINOR, QGLENGINE_VERSION_REVISION)
// Tools
#define QGLENGINE_CMAKE_VERSION "3.17.1"
#define QGLENGINE_CXX_COMPILER "GNU 8.1.0"
#define QGLENGINE_BUILD_DATE "22.08.2020 00:51"
#define QGLENGINE_ARCH "i386"
#endif // QGLENGINE_QGLENGINE_VERSION_H

View File

@@ -9,18 +9,18 @@ qt_wrap(${SRC} HDRS out_HDR CPPS out_CPP QMS out_QM)
file(GLOB PHS "*_p.h") file(GLOB PHS "*_p.h")
list(REMOVE_ITEM out_HDR "${PHS}") list(REMOVE_ITEM out_HDR "${PHS}")
import_version(${PROJECT_NAME} qglengine) import_version(${PROJECT_NAME} qglengine)
set_deploy_property(${PROJECT_NAME} SHARED set_deploy_property(${PROJECT_NAME} ${qglengine_LIB_TYPE}
LABEL "QGLEngine widgets library" LABEL "QGLEngine widgets library"
FULLNAME "${_DOMAIN}.${PROJECT_NAME}" FULLNAME "${qglengine_DOMAIN}.${PROJECT_NAME}"
COMPANY "${_COMPANY}" COMPANY "${qglengine_COMPANY}"
INFO "QGLEngine widgets library") INFO "QGLEngine widgets library")
make_rc(${PROJECT_NAME} _RC) make_rc(${PROJECT_NAME} _RC)
qt_add_library(${PROJECT_NAME} SHARED out_CPP ${_RC}) qt_add_library(${PROJECT_NAME} ${qglengine_LIB_TYPE} out_CPP ${_RC})
qt_generate_export_header(${PROJECT_NAME}) qt_generate_export_header(${PROJECT_NAME})
list(APPEND out_HDR "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_export.h") list(APPEND out_HDR "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_export.h")
qt_target_link_libraries(${PROJECT_NAME} qad_utils qad_widgets qglengine_core) qt_target_link_libraries(${PROJECT_NAME} QAD::Widgets qglengine_core)
qt_target_include_directories(${PROJECT_NAME} PRIVATE ${QAD_INCLUDES} "${CMAKE_CURRENT_SOURCE_DIR}/../" "${CMAKE_CURRENT_SOURCE_DIR}/../core") #qt_target_include_directories(${PROJECT_NAME} PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/../core")
list(APPEND QT_MULTILIB_LIST ${PROJECT_NAME}) list(APPEND QT_MULTILIB_LIST ${PROJECT_NAME})
copy_to_parent("") shstk_copy_to_parent()
#message(STATUS "Building ${PROJECT_NAME}") #message(STATUS "Building ${PROJECT_NAME}")
sdk_install("qglengine" FALSE "${PROJECT_NAME}" "${out_HDR}" "${out_QM}") shstk_qt_install("qglengine" FALSE "${PROJECT_NAME}" "${out_HDR}" "${out_QM}")