cmake_minimum_required (VERSION 3.4) ########################################################### # Set project options # # set the project name project(MicroLMS) set (CMAKE_CXX_STANDARD 11) set (CMAKE_POSITION_INDEPENDENT_CODE ON) # set to ON to build library, OFF to build executable set (BUILD_LIBRARY ON) include_directories( ${PROJECT_BINARY_DIR} MicroLMS core heci) ########################################################### # Compiler / linker options # if (UNIX) # # Linux Compiler and Linker Options # Find threads [unix it pthreads] set(CMAKE_THREAD_PREFER_PTHREAD TRUE) set(THREADS_PREFER_PTHREAD_FLAG TRUE) find_package(Threads REQUIRED) if (${BUILD_LIBRARY}) add_definitions(-D BUILD_LIBRARY) endif (${BUILD_LIBRARY}) if (${NO_SELECT}) add_definitions(-D NO_SELECT) endif (${NO_SELECT}) add_definitions( -D_POSIX ) else (UNIX) # Windows Compiler and Linker Options if (${BUILD_LIBRARY}) add_definitions(/D BUILD_LIBRARY) endif (${BUILD_LIBRARY}) add_definitions (/GS /GL /W3 /Gy /Zc:wchar_t /Zi /Zc:inline /fp:precise /WX- /Zc:forScope /Gd /Oi /FC /EHsc /nologo ) add_definitions (/D WIN32 /D WIN64 /D NDEBUG /D _CONSOLE /D MICROSTACK_NO_STDAFX /D WINSOCK2 /D MICROSTACK_NOTLS /D _UNICODE /D UNICODE) add_definitions (/errorReport:prompt /diagnostics:column) add_compile_options ($<$:/O1>) add_compile_options (/MT$<$:d>) set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT /Gm-") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd /Gm /Od /D _DEBUG /D MEMORY_CHECK /D __STDC__ /D _CRT_SECURE_NO_WARNINGS /D ILibWebServer_SESSION_TRACKING /Gd /MDd") set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MANIFEST /LTCG:incremental /NXCOMPAT /DynamicBase /MACHINE:X64 /OPT:REF /INCREMENTAL:NO /SUBSYSTEM:CONSOLE /MANIFESTUAC:\"level='asInvoker' uiAccess='false'\" /OPT:ICF /ERRORREPORT:PROMPT /NOLOGO /TLBID:1" ) endif (UNIX) ########################################################### # Create the binary # if (UNIX) # # Linux Library and Executable Build # if (BUILD_LIBRARY) # Create a library add_library ( MicroLMS STATIC MicroLMS/main.c core/utils.c heci/HECILinux.c heci/LMEConnection.c heci/PTHICommand.c microstack/ILibAsyncServerSocket.c microstack/ILibAsyncSocket.c microstack/ILibLMS.c microstack/ILibParsers.c ) target_link_libraries ( MicroLMS ) else (BUILD_LIBRARY) # Create an executable add_executable ( MicroLMS MicroLMS/main.c core/utils.c heci/HECILinux.c heci/LMEConnection.c heci/PTHICommand.c microstack/ILibAsyncServerSocket.c microstack/ILibAsyncSocket.c microstack/ILibLMS.c microstack/ILibParsers.c ) target_link_libraries ( MicroLMS PRIVATE pthread ) endif (BUILD_LIBRARY) else (UNIX) # # Windows Library and Executable Build # if (BUILD_LIBRARY) # Create a library add_library ( MicroLMS STATIC MicroLMS/main.c MicroLMS/stdafx.cpp core/utils.c heci/HECIWin.c heci/LMEConnection.c heci/PTHICommand.c microstack/ILibAsyncServerSocket.c microstack/ILibAsyncSocket.c microstack/ILibLMS.c microstack/ILibParsers.c ) target_link_libraries ( MicroLMS ) else (BUILD_LIBRARY) # Create an executable add_executable ( MicroLMS MicroLMS/main.c MicroLMS/stdafx.cpp core/utils.c heci/HECIWin.c heci/LMEConnection.c heci/PTHICommand.c microstack/ILibAsyncServerSocket.c microstack/ILibAsyncSocket.c microstack/ILibLMS.c microstack/ILibParsers.c ) target_link_libraries ( MicroLMS PRIVATE DbgHelp.lib Iphlpapi.lib Setupapi.lib ws2_32.lib Psapi.lib Crypt32.lib Wintrust.lib Version.lib Wtsapi32.lib Gdiplus.lib Userenv.lib ) endif (BUILD_LIBRARY) endif (UNIX)