Created
March 22, 2019 16:07
-
-
Save xn3cr0nx/2c6ae5d5faeb1b1573fcdde4efccce9e to your computer and use it in GitHub Desktop.
CMake list to define build directives
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| cmake_minimum_required(VERSION 3.0) | |
| project(micro-service) | |
| # Configure required libraries ... | |
| if(UNIX) # Darwin or Linux | |
| set(Boost_USE_STATIC_LIBS ON) | |
| set(BUILD_SHARED_LIBS OFF) | |
| find_package(Boost REQUIRED COMPONENTS system thread log program_options chrono) | |
| find_package(Threads REQUIRED) | |
| if(APPLE) | |
| # Prefer a homebrew version of OpenSSL over the one in /usr/lib | |
| file(GLOB OPENSSL_ROOT_DIR /usr/local/Cellar/openssl/*) | |
| # Prefer the latest (make the latest one first) | |
| list(REVERSE OPENSSL_ROOT_DIR) | |
| find_package(OpenSSL 1.0.2 REQUIRED) | |
| set(OPENSSL_VERSION "1.0.2p") | |
| else() | |
| find_package(OpenSSL 1.0.1 REQUIRED) | |
| set(OPENSSL_VERSION "1.0.1") | |
| endif() | |
| elseif(WIN32) # Windows systems including Win64. | |
| message(FATAL_ERROR "-- Windows is not supported for now.") | |
| else() | |
| message(FATAL_ERROR "-- Unsupported platform sorry! :( ") | |
| endif() | |
| # Configure compiler options ... | |
| if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") | |
| message("-- configuring clang options") | |
| set(CMAKE_CXX_FLAGS "-arch x86_64 -std=c++11 -stdlib=libc++ -DBOOST_LOG_DYN_LINK -Wno-deprecated-declarations") | |
| # set(GCC_CXX_FLAGS ${GCC_CXX_FLAGS} "-static-libgcc -static-libstdc++ -static") | |
| # SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a") | |
| # SET(BUILD_SHARED_LIBS OFF) | |
| # SET(CMAKE_EXE_LINKER_FLAGS "-static") | |
| elseif(CMAKE_CXX_COMPILER_ID MATCHES "GNU") | |
| message("-- configuring gcc options") | |
| set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11 -DBOOST_LOG_DYN_LINK") | |
| # set(GCC_CXX_FLAGS ${GCC_CXX_FLAGS} "-static-libgcc -static-libstdc++ -static") | |
| # SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a") | |
| # SET(BUILD_SHARED_LIBS OFF) | |
| # SET(CMAKE_EXE_LINKER_FLAGS "-static") | |
| endif() | |
| # Project construction ... | |
| # source files ... | |
| add_executable(${PROJECT_NAME} ./source/main.cpp | |
| ./source/microsvc_controller.cpp | |
| ./source/foundation/network_utils.cpp | |
| ./source/foundation/basic_controller.cpp) | |
| # headers search paths ... | |
| set(CPPRESTSDK_INCLUDE_DIR "./libs/cpprestsdk/Release/include") | |
| set(MICROSERVICE_INCLUDE_DIR "./source/foundation/include") | |
| message(MICROSERVICE " ${MICROSERVICE_INCLUDE_DIR}") | |
| set(HEADER_SEARCH_PATHS ${CPPRESTSDK_INCLUDE_DIR} ${MICROSERVICE_INCLUDE_DIR} ${Boost_INCLUDE_DIR} ${OPENSSL_INCLUDE_DIR}) | |
| # library search paths ... | |
| if(APPLE) | |
| set(OPENSSL_LIBS "/usr/local/Cellar/openssl/${OPENSSL_VERSION}/lib/libssl.1.0.0.dylib;/usr/local/Cellar/openssl/${OPENSSL_VERSION}/lib/libcrypto.1.0.0.dylib") | |
| set(CPPRESTSDK_LIBRARY "${PROJECT_SOURCE_DIR}/libs/cpprestsdk/build.release/Binaries/libcpprest.a") | |
| set(ZIP_LIBRARY "/usr/local/Cellar/zlib/1.2.11/lib/libz.dylib") | |
| # adds boost library | |
| set(Boost_LIBRARIES "/usr/local/include/boost") | |
| set(LIBRARIES_SEARCH_PATHS ${OPENSSL_LIBS} ${Boost_LIBRARIES} ${CPPRESTSDK_LIBRARY} ${ZIP_LIBRARY}) | |
| else() | |
| set(OPENSSL_LIBS "${OPENSSL_LIBRARIES}") | |
| set(CPPRESTSDK_LIBRARY "${PROJECT_SOURCE_DIR}/libs/cpprestsdk/build.release/Binaries/libcpprest.a") | |
| set(LIBRARIES_SEARCH_PATHS ${CPPRESTSDK_LIBRARY} ${OPENSSL_LIBS} ${Boost_LIBRARIES}) | |
| endif() | |
| message(BOOST_LIBS " ${Boost_LIBRARIES}") | |
| message(OPENSSL_LIBS " ${OPENSSL_LIBRARIES}") | |
| message(CPPRESTSDK_LIBRARY " ${CPPRESTSDK_LIBRARY}") | |
| message(LIBRARIES_SEARCH_PATHS " ${LIBRARIES_SEARCH_PATHS}") | |
| include_directories(${HEADER_SEARCH_PATHS}) | |
| if (APPLE) | |
| target_link_libraries(${PROJECT_NAME} "-framework CoreFoundation") | |
| target_link_libraries(${PROJECT_NAME} "-framework Security") | |
| # target_link_libraries(${PROJECT_NAME} ${LIBRARIES_SEARCH_PATHS}) | |
| target_link_libraries(${PROJECT_NAME} ${LIBRARIES_SEARCH_PATHS} "-static-libgcc -static-libstdc++ -static") | |
| set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS "-W1, -F/Library/Frameworks") | |
| else() | |
| target_link_libraries(${PROJECT_NAME} ${LIBRARIES_SEARCH_PATHS}) | |
| endif() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment