add basic c++ project setup

This commit is contained in:
2026-04-19 10:19:27 +02:00
parent 1e1f2d7816
commit 8b740dfe8e
36 changed files with 16842 additions and 0 deletions

69
CMakeLists.txt Normal file
View File

@@ -0,0 +1,69 @@
cmake_minimum_required(VERSION 3.1)
message(STATUS "Using CMake ${CMAKE_VERSION}")
include(cmake/add_files.cmake)
include(cmake/create_source_groups.cmake)
# Project ----------------------------------------------------------------------
project(DotaFactory)
set(CMAKE_BUILD_TYPE_INIT "Release")
# Qt ---------------------------------------------------------------------------
find_package(Qt5 COMPONENTS Widgets Network Multimedia Charts REQUIRED)
if(Qt5Widgets_FOUND)
message(STATUS "Found Qt ${Qt5Widgets_VERSION_STRING}")
# FIX: Qt was built with -reduce-relocations
if (Qt5_POSITION_INDEPENDENT_CODE)
SET(CMAKE_POSITION_INDEPENDENT_CODE ON)
endif()
endif()
# Setup ---------------------------------------------------------------------------
get_filename_component(QT_BINARY_DIR "${QT_MOC_EXECUTABLE}" PATH)
set(QT_PLUGINS_DIR "${QT_BINARY_DIR}/../plugins")
function(COPY_QT_BINARIES TARGET_DIR IS_DEBUG)
set(SUFFIX "")
if (IS_DEBUG)
set(SUFFIX "d")
endif()
set(CONFIGURATION "Release")
if (IS_DEBUG)
set(CONFIGURATION "Debug")
endif()
if(CMAKE_CL_64)
set(BITS "64")
else()
set(BITS "32")
endif()
configure_file("${QT_BINARY_DIR}/Qt5Charts${SUFFIX}.dll" "${TARGET_DIR}/Qt5Charts${SUFFIX}.dll" COPYONLY)
configure_file("${QT_BINARY_DIR}/Qt5Core${SUFFIX}.dll" "${TARGET_DIR}/Qt5Core${SUFFIX}.dll" COPYONLY)
configure_file("${QT_BINARY_DIR}/Qt5Gui${SUFFIX}.dll" "${TARGET_DIR}/Qt5Gui${SUFFIX}.dll" COPYONLY)
configure_file("${QT_BINARY_DIR}/Qt5Network${SUFFIX}.dll" "${TARGET_DIR}/Qt5Network${SUFFIX}.dll" COPYONLY)
configure_file("${QT_BINARY_DIR}/Qt5Widgets${SUFFIX}.dll" "${TARGET_DIR}/Qt5Widgets${SUFFIX}.dll" COPYONLY)
configure_file("${QT_BINARY_DIR}/Qt5Multimedia${SUFFIX}.dll" "${TARGET_DIR}/Qt5Multimedia${SUFFIX}.dll" COPYONLY)
endfunction(COPY_QT_BINARIES)
# Src ----------------------------------------------------------------------
find_package(OpenGL REQUIRED)
set(HEADER_SEARCH_PATHS)
set(SYSTEM_HEADER_SEARCH_PATHS)
set(LINK_LIBRARIES ${Boost_LIBRARIES} Qt5::Widgets Qt5::Network Qt5::Multimedia Qt5::Charts ${OPENGL_LIBRARIES})
add_subdirectory(src)