Skip to content

Instantly share code, notes, and snippets.

@xn3cr0nx
Created April 1, 2019 15:36
Show Gist options
  • Select an option

  • Save xn3cr0nx/99bedb10c299e6c249187225cad82c9d to your computer and use it in GitHub Desktop.

Select an option

Save xn3cr0nx/99bedb10c299e6c249187225cad82c9d to your computer and use it in GitHub Desktop.
cmake file to build up the project
cmake_minimum_required(VERSION 3.0)
project(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)
find_package(OpenSSL 1.0.1 REQUIRED)
set(OPENSSL_VERSION "1.0.1")
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")
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")
endif()
# Project construction ...
# source files ...
add_executable(${PROJECT_NAME} ./main/main.cpp
./main/microsvc_controller.cpp
./main/network_utils.cpp
./main/basic_controller.cpp)
# headers search paths ...
set(MICROSERVICE_INCLUDE_DIR "./main/include")
set(CPPRESTSDK_INCLUDE_DIR "./libs/cpprestsdk/Release/include")
set(ENTANGLED_INCLUDE_DIR "./libs/entangled")
set(ENTANGLED_BIN_INCLUDE_DIR "./libs/entangled/bazel-bin")
set(KECCAK_INCLUDE_DIR "./libs/entangled/bazel-bin/external/keccak/_virtual_includes/keccak")
set(KECCAK_SPONGE1600_INCLUDE_DIR "./libs/entangled/bazel-bin/external/keccak/_virtual_includes/keccak_sponge_1600")
set(KECCAK_SPONGECOMMON_INCLUDE_DIR "./libs/entangled/bazel-bin/external/keccak/_virtual_includes/keccak_sponge_common")
set(KECCAK_SNP1600_INCLUDE_DIR "./libs/entangled/bazel-bin/external/keccak/_virtual_includes/snp_1600_reference")
set(ALIGN_INCLUDE_DIR "./libs/entangled/bazel-bin/external/keccak/_virtual_includes/common")
set(DEPS_INCLUDE_DIR "./libs/include")
set(HEADER_SEARCH_PATHS
${MICROSERVICE_INCLUDE_DIR}
${OPENSSL_INCLUDE_DIR}
${CPPRESTSDK_INCLUDE_DIR}
${ENTANGLED_INCLUDE_DIR}
${ENTANGLED_BIN_INCLUDE_DIR}
${Boost_INCLUDE_DIR}
${OPENSSL_INCLUDE_DIR}
${KECCAK_INCLUDE_DIR}
${KECCAK_SPONGECOMMON_INCLUDE_DIR}
${KECCAK_SPONGE1600_INCLUDE_DIR}
${KECCAK_SNP1600_INCLUDE_DIR}
${ALIGN_INCLUDE_DIR}
${DEPS_INCLUDE_DIR}
)
set(OPENSSL_LIBS "${OPENSSL_LIBRARIES}")
set(Boost_LIBRARIES "${Boost_LIBRARIES}")
set(ZIP_LIBRARY "/usr/local/Cellar/zlib/1.2.11/lib/libz.dylib")
set(CPPRESTSDK_LIBRARY "${PROJECT_SOURCE_DIR}/libs/cpprestsdk/build.release/Binaries/libcpprest.a")
set(static_mam "${PROJECT_SOURCE_DIR}/libs/include/libmam.a")
set(LIBRARIES_SEARCH_PATHS
${OPENSSL_LIBS}
${Boost_LIBRARIES}
${CPPRESTSDK_LIBRARY}
${static_mam}
)
include_directories(${HEADER_SEARCH_PATHS})
target_link_libraries(${PROJECT_NAME} ${LIBRARIES_SEARCH_PATHS} "-static-libgcc -static-libstdc++ -static -ldl -lssl -lcrypto")
# set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS "-Wa, -F/Library/Frameworks")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment