93 lines
2.7 KiB
CMake
93 lines
2.7 KiB
CMake
cmake_minimum_required(VERSION 3.11)
|
|
enable_language(CXX)
|
|
project(General)
|
|
|
|
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# O/S Detection
|
|
|
|
# these are defined in common.h too
|
|
SET(LINUX False)
|
|
SET(FREEBSD False)
|
|
SET(MACOS False)
|
|
|
|
# Detect the operating system
|
|
IF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
|
SET(TARGET_OS_NAME "macos")
|
|
SET(TARGET_OS 3)
|
|
SET(MACOS True)
|
|
ELSEIF(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
|
|
SET(TARGET_OS_NAME "freebsd")
|
|
SET(TARGET_OS 2)
|
|
SET(FREEBSD True)
|
|
ELSE()
|
|
SET(TARGET_OS_NAME "linux")
|
|
SET(TARGET_OS 1)
|
|
SET(LINUX True)
|
|
ENDIF()
|
|
|
|
# show the operating system on the console
|
|
message(STATUS "operating system: ${TARGET_OS_NAME} (TARGET_OS=${TARGET_OS})")
|
|
|
|
message( "current compiler " ${CMAKE_CXX_COMPILER_ID})
|
|
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
|
# using Clang
|
|
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
|
add_compile_options(-Wall)
|
|
add_compile_options(-Wsign-compare)
|
|
add_compile_options(-Werror)
|
|
add_compile_options(-Wno-unused-function)
|
|
add_compile_options(-Wno-misleading-indentation)
|
|
add_compile_options(-Wno-format-overflow)
|
|
|
|
# using GCC
|
|
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel")
|
|
# using Intel C++
|
|
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
|
|
# using Visual Studio C++
|
|
aux_source_directory(src DIRSRCS)
|
|
aux_source_directory(src/pattern PaternSrc)
|
|
aux_source_directory(src/function FunctionSrc)
|
|
aux_source_directory(src/algorithm AlgorithmSrc)
|
|
aux_source_directory(src/encrypt EncryptSrc)
|
|
|
|
add_compile_options( /DEBUG /D_CRT_SECURE_NO_WARNINGS /D_CRT_SECURE_NO_WARNINGS)
|
|
|
|
add_library(General OBJECT ${DIRSRCS} ${PaternSrc} ${EncryptSrc} ${FunctionSrc} ${AlgorithmSrc} )
|
|
|
|
set_property(TARGET General PROPERTY
|
|
MSVC_RUNTIME_LIBRARY MultiThreadedDebug)
|
|
|
|
|
|
elseif("AppleClang" STREQUAL ${CMAKE_CXX_COMPILER_ID})
|
|
message("apple clang compiler")
|
|
|
|
aux_source_directory(src DIRSRCS)
|
|
aux_source_directory(src/pattern PaternSrc)
|
|
# aux_source_directory(src/function FunctionSrc)
|
|
aux_source_directory(src/algorithm AlgorithmSrc)
|
|
aux_source_directory(src/encrypt EncryptSrc)
|
|
add_library(General OBJECT ${DIRSRCS} ${PaternSrc} ${EncryptSrc} ${FunctionSrc} ${AlgorithmSrc} )
|
|
|
|
set_property(TARGET General PROPERTY
|
|
MSVC_RUNTIME_LIBRARY MultiThreadedDebug)
|
|
endif()
|
|
|
|
SET(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/obj)
|
|
message( "LIBRARY_OUTPUT_PATH " ${LIBRARY_OUTPUT_PATH})
|
|
|
|
|
|
|
|
set(CMAKE_CXX_STANDARD 11)
|
|
INCLUDE_DIRECTORIES (./)
|
|
INCLUDE_DIRECTORIES (inc)
|
|
INCLUDE_DIRECTORIES (encrypt)
|
|
INCLUDE_DIRECTORIES (pattern)
|
|
|
|
include_directories(third/include)
|
|
|
|
message("source file is " ${DIRSRCS} ${PaternSrc} ${EncryptSrc} ${FunctionSrc} ${AlgorithmSrc})
|
|
|
|
|