########################################################################################### # # (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 "------------------------------------------------------------") ###############################################################################