cmake_minimum_required(VERSION 3.11) enable_language(CXX) project(General) 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") add_compile_options("/std:c++17") # using Visual Studio C++ 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) 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/net NetSrc) aux_source_directory(src/encrypt EncryptSrc) message("source file is " ${DIRSRCS} ${PaternSrc} ${EncryptSrc} ${NetSrc} ${FunctionSrc} ${AlgorithmSrc}) add_library(General OBJECT ${DIRSRCS} ${PaternSrc} ${EncryptSrc} ${NetSrc} ${FunctionSrc} ${AlgorithmSrc} )