130 lines
4.6 KiB
CMake
130 lines
4.6 KiB
CMake
cmake_minimum_required (VERSION 3.5.0)
|
|
project (CarlaServer)
|
|
|
|
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
set(CarlaServer_Lib_Target carlaserverd)
|
|
set(CarlaServer_Test_Target test_carlaserverd)
|
|
elseif (CMAKE_BUILD_TYPE STREQUAL "Release")
|
|
set(CarlaServer_Lib_Target carlaserver)
|
|
set(CarlaServer_Test_Target test_carlaserver)
|
|
endif (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
|
|
# ==============================================================================
|
|
# -- Compiler and dependencies -------------------------------------------------
|
|
# ==============================================================================
|
|
|
|
if (UNIX)
|
|
|
|
find_package(Threads)
|
|
|
|
set(CMAKE_CXX_COMPILER /usr/bin/clang++-3.9)
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -std=c++14 -pthread")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Wall -Wextra -Wno-unused-parameter")
|
|
|
|
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
|
|
|
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -D_DEBUG -O0")
|
|
elseif (CMAKE_BUILD_TYPE STREQUAL "Release")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DNDEBUG -O3")
|
|
endif (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
|
|
# Setup libc++.
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
|
|
include_directories("${CARLA_LIBCXX_INSTALL_PATH}/include/c++/v1")
|
|
link_directories("${CARLA_LIBCXX_INSTALL_PATH}/lib")
|
|
file(GLOB LibCXX_Shared_Libraries "${CARLA_LIBCXX_INSTALL_PATH}/lib/libc++*.so*")
|
|
file(GLOB LibCXX_Static_Libraries "${CARLA_LIBCXX_INSTALL_PATH}/lib/libc++*.a")
|
|
|
|
# Setup boost.
|
|
include_directories("${CARLA_BOOST_INSTALL_PATH}/include")
|
|
set(Boost_Static_Libraries "${CARLA_BOOST_INSTALL_PATH}/lib/libboost_system.a")
|
|
|
|
# Setup protobuf.
|
|
include_directories("${CARLA_PROTOBUF_INSTALL_PATH}/include")
|
|
set(Protobuf_Static_Libraries "${CARLA_PROTOBUF_INSTALL_PATH}/lib/libprotobuf.a")
|
|
|
|
# Setup googletest.
|
|
include_directories("${CARLA_GOOGLETEST_INSTALL_PATH}/include")
|
|
set(GTest_Static_Libraries "${CARLA_GOOGLETEST_INSTALL_PATH}/lib/libgtest.a")
|
|
|
|
install(FILES
|
|
${LibCXX_Shared_Libraries}
|
|
DESTINATION shared)
|
|
|
|
install(FILES
|
|
${LibCXX_Static_Libraries}
|
|
${Boost_Static_Libraries}
|
|
${Protobuf_Static_Libraries}
|
|
DESTINATION lib)
|
|
|
|
elseif (WIN32)
|
|
|
|
# Setup boost.
|
|
include_directories("${CARLA_BOOST_INSTALL_PATH}/boost-1_64")
|
|
file(GLOB Boost_System_Static_Libraries "${CARLA_BOOST_INSTALL_PATH}/lib/libboost_system*.lib")
|
|
file(GLOB Boost_DateTime_Static_Libraries "${CARLA_BOOST_INSTALL_PATH}/lib/libboost_date_time*.lib")
|
|
set(Boost_Static_Libraries
|
|
"${Boost_System_Static_Libraries}"
|
|
"${Boost_DateTime_Static_Libraries}")
|
|
|
|
# Setup protobuf.
|
|
include_directories("${CARLA_PROTOBUF_INSTALL_PATH}/include")
|
|
set(Protobuf_Static_Libraries "${CARLA_PROTOBUF_INSTALL_PATH}/lib/libprotobuf.lib")
|
|
|
|
# Setup googletest.
|
|
include_directories("${CARLA_GOOGLETEST_INSTALL_PATH}/include")
|
|
set(GTest_Static_Libraries "${CARLA_GOOGLETEST_INSTALL_PATH}/lib/gtest.lib")
|
|
|
|
install(FILES
|
|
${Boost_Static_Libraries}
|
|
${Protobuf_Static_Libraries}
|
|
DESTINATION lib)
|
|
|
|
else (UNIX)
|
|
message(FATAL_ERROR "Build configuration not yet available for this platform")
|
|
endif (UNIX)
|
|
|
|
# ==============================================================================
|
|
# -- Project config ------------------------------------------------------------
|
|
# ==============================================================================
|
|
|
|
set(CarlaServer_Path "${CARLA_UTIL_PATH}/CarlaServer")
|
|
|
|
include_directories("${CarlaServer_Path}/source")
|
|
include_directories("${CarlaServer_Path}/include")
|
|
|
|
# libcarlaserver
|
|
|
|
file(GLOB carlaserver_SRC
|
|
"${CarlaServer_Path}/include/carla/carla_server.h"
|
|
"${CarlaServer_Path}/source/carla/*.h"
|
|
"${CarlaServer_Path}/source/carla/*.cpp"
|
|
"${CarlaServer_Path}/source/carla/server/*.h"
|
|
"${CarlaServer_Path}/source/carla/server/*.cpp"
|
|
"${CarlaServer_Path}/source/carla/server/*.pb.h"
|
|
"${CarlaServer_Path}/source/carla/server/*.pb.cc")
|
|
|
|
add_library(${CarlaServer_Lib_Target} STATIC ${carlaserver_SRC})
|
|
install(DIRECTORY "${CarlaServer_Path}/include/carla" DESTINATION include)
|
|
install(TARGETS ${CarlaServer_Lib_Target} DESTINATION lib)
|
|
|
|
# unit tests
|
|
|
|
file(GLOB test_carlaserver_SRC
|
|
"${CarlaServer_Path}/source/test/*.h"
|
|
"${CarlaServer_Path}/source/test/*.cpp")
|
|
|
|
set(CarlaServer_Static_LIBRARIES
|
|
${CarlaServer_Lib_Target}
|
|
${GTest_Static_Libraries}
|
|
${Protobuf_Static_Libraries}
|
|
${Boost_Static_Libraries}
|
|
${CMAKE_THREAD_LIBS_INIT})
|
|
|
|
if (UNIX)
|
|
add_executable(${CarlaServer_Test_Target} ${test_carlaserver_SRC})
|
|
target_link_libraries(${CarlaServer_Test_Target} ${CarlaServer_Static_LIBRARIES})
|
|
install(TARGETS ${CarlaServer_Test_Target} DESTINATION bin)
|
|
endif (UNIX)
|