LSFramework/CMake/CMake.1.6.0/CMakeSettings.cmake
2022-06-23 13:44:39 +02:00

165 lines
6.3 KiB
CMake

###########################################################################################
#
# (c) Technical Software Engineering Plazotta 2019
#
# CMAKE project settings file
#
# History
# 29.09.2019 / Plazotta
# Template created.
#
#-----------------------------------------------------------------------------------------
#
#-----------------------------------------------------------------------------------------
# Define the project global CMAKE settings
#
set (TSEP_PROJECT_NAME ${PROJECT_NAME})
set (TSEP_SOURCE_DIR ${PROJECT_SOURCE_DIR})
set (TSEP_EXPORT_DIR ${PROJECT_SOURCE_DIR}/../Export)
set (TSEP_BINARY_DIR ${PROJECT_BINARY_DIR})
set (TSEP_TARGET_DIR ${CMAKE_BINARY_DIR}/${TSEP_BUILD_CONFIGURATION})
set (TSEP_CA_RULESET_DIR RuleSets)
set (TSEP_CA_RULESET_FILE TsepNativeRecommendedRules.ruleset)
set (TSEP_VS_PROP_FILE TsepPropertySheet.props)
set(TSEP_AUTOBUILD_PROJECT "")
set_property(GLOBAL PROPERTY TSEP_AUTOBUILD_UNITTEST)
IF (WIN32)
set (TSEP_APPLICATION_ICON_PATH ${TSEP_PROJECT_CMAKE}"/Versions/Win32/TSEP.ico")
set (TSEP_APP_VERSION_RC ${TSEP_PROJECT_CMAKE}"/Versions/Win32/DefaultAppVersion.rc")
set (TSEP_DLL_VERSION_RC ${TSEP_PROJECT_CMAKE}"/Versions/Win32/DefaultDllVersion.rc")
set (TSEP_NUGET_APPLICATION nuget.exe)
ELSE()
set (TSEP_APPLICATION_ICON_PATH "")
set (TSEP_APP_VERSION_RC "")
set (TSEP_DLL_VERSION_RC "")
set (TSEP_NUGET_APPLICATION nuget)
ENDIF()
###############################################################################
###############################################################################
# SET INCLUDE PATH FOR CMAKE PROVIDED HEADERS
###############################################################################
include_directories(${CMAKE_CURRENT_LIST_DIR}/Includes)
###############################################################################
# PROJECT SPECIFIC VARIABLES
###############################################################################
###############################################################################
# COMPILER SETTINGS
###############################################################################
# Windows
###############################################################################
IF (WIN32)
#- Compiler Warning level 4 -> /W4 --------------------------------------------
#- Compiler Generate Debug Info -> /Zi ----------------------------------------
add_compile_options(
/W4
/Zi
)
#- Compile with UNICODE chars -------------------------------------------------
#- Compile with minimal windows libs --------------------------------------------
#- Minimum Windows is W7 (0x0601) ---------------------------------------------
#- No secure warnings ---------------------------------------------------------
add_definitions(
/DUNICODE
/D_UNICODE
/DWIN32_LEAN_AND_MEAN
/D_WIN32_WINNT=0x0601
/D_CRT_SECURE_NO_WARNINGS
)
add_link_options(
/Debug
)
ENDIF()
###############################################################################
# LINUX
###############################################################################
IF (LINUX)
#- Define for Intel linux -----------------------------------------------------
#- relocatable code ----------------------------------------------------------
add_compile_options(
-fPIC
-pthread
)
#add_definitions(
#)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic -Wno-unknown-pragmas -Wno-pragma-once-outside-header -fvisibility=hidden")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -pedantic -Wno-unknown-pragmas -Wno-pragma-once-outside-header -fvisibility=hidden")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG")
set(CMAKE_INSTALL_RPATH "$ORIGIN")
set(CMAKE_BUILD_RPATH "$ORIGIN")
ENDIF()
###############################################################################
# SET OUTPUT DIRECTORIES for exe, dll, lib and pdb files
###############################################################################
# must set directories for each configuration,
if(WIN32)
set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/../../Export)
# cmake can not use the $(Configuration) variable, so we must define separate debug and release variables
set(TSEP_TARGET_DIR ${CMAKE_BINARY_DIR}/$(Configuration))
set(TSEP_TARGET_DIR_RELEASE ${CMAKE_BINARY_DIR}/Release)
set(TSEP_TARGET_DIR_DEBUG ${CMAKE_BINARY_DIR}/Debug)
else()
set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/../Export)
set(TSEP_TARGET_DIR ${CMAKE_BINARY_DIR})
set(TSEP_TARGET_DIR_RELEASE ${CMAKE_BINARY_DIR})
set(TSEP_TARGET_DIR_DEBUG ${CMAKE_BINARY_DIR})
endif()
# set directories
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${TSEP_TARGET_DIR_RELEASE}/bin)
if(WIN32)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${TSEP_TARGET_DIR_RELEASE}/lib)
else()
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${TSEP_TARGET_DIR_RELEASE}/bin)
endif()
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${TSEP_TARGET_DIR_RELEASE}/lib)
set(CMAKE_PDB_OUTPUT_DIRECTORY_RELEASE ${TSEP_TARGET_DIR_RELEASE}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${TSEP_TARGET_DIR_DEBUG}/bin)
if(WIN32)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${TSEP_TARGET_DIR_DEBUG}/lib)
else()
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${TSEP_TARGET_DIR_DEBUG}/bin)
endif()
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${TSEP_TARGET_DIR_DEBUG}/lib)
set(CMAKE_PDB_OUTPUT_DIRECTORY_DEBUG ${TSEP_TARGET_DIR_DEBUG}/lib)
IF (WIN32)
file(MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/Debug/bin")
file(MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/Release/bin")
ENDIF()
###############################################################################
message(NOTICE "------------------------------------------------------------")
message(NOTICE " Used Generator = ${TSEP_CMAKE_GENERATOR}")
message(NOTICE " Used Config = ${TSEP_BUILD_CONFIGURATION}")
message(NOTICE " Used Project = ${TSEP_PROJECT_NAME}")
message(NOTICE " Source path = ${TSEP_SOURCE_DIR}")
message(NOTICE " Binary path = ${TSEP_BINARY_DIR}")
message(NOTICE " Target path = ${TSEP_TARGET_DIR}")
message(NOTICE " Product Build = ${TSEP_PRODUCT_BUILD}")
message(NOTICE "------------------------------------------------------------")
###############################################################################