165 lines
6.3 KiB
CMake
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 "------------------------------------------------------------")
|
|
|
|
###############################################################################
|