Refactoring of CMakeLists.txt
This commit is contained in:
113
CMakeLists.txt
113
CMakeLists.txt
@@ -1,4 +1,4 @@
|
|||||||
cmake_minimum_required(VERSION 3.0)
|
cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
|
||||||
project(i3ipc++)
|
project(i3ipc++)
|
||||||
|
|
||||||
option(I3IPCpp_WITH_TESTS "Build unit tests executables" OFF)
|
option(I3IPCpp_WITH_TESTS "Build unit tests executables" OFF)
|
||||||
@@ -8,54 +8,119 @@ find_package(PkgConfig)
|
|||||||
pkg_check_modules(SIGCPP REQUIRED sigc++-2.0)
|
pkg_check_modules(SIGCPP REQUIRED sigc++-2.0)
|
||||||
pkg_check_modules(JSONCPP REQUIRED jsoncpp)
|
pkg_check_modules(JSONCPP REQUIRED jsoncpp)
|
||||||
|
|
||||||
include_directories(
|
|
||||||
|
set(I3IPCpp_INCLUDE_DIRS
|
||||||
${SIGCPP_INCLUDE_DIRS}
|
${SIGCPP_INCLUDE_DIRS}
|
||||||
${JSONCPP_INCLUDE_DIRS}
|
${i3ipc++_SOURCE_DIR}/3rd/auss/include
|
||||||
3rd/auss/include
|
${i3ipc++_SOURCE_DIR}/include/
|
||||||
include/i3ipc++
|
|
||||||
)
|
)
|
||||||
|
|
||||||
link_directories(
|
set(I3IPCpp_LIBRARY_DIRS
|
||||||
${SIGCPP_LIBRARY_DIRS}
|
${SIGCPP_LIBRARY_DIRS}
|
||||||
${JSONCPP_LIBRARY_DIRS}
|
${JSONCPP_LIBRARY_DIRS}
|
||||||
|
${PROJECT_BINARY_DIR}
|
||||||
|
)
|
||||||
|
|
||||||
|
set(I3IPCpp_LIBRARIES
|
||||||
|
${SIGCPP_LIBRARIES}
|
||||||
|
${JSONCPP_LIBRARIES}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wextra -Wno-unused-parameter")
|
||||||
|
# set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g3 -DDEBUG")
|
||||||
|
# set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O2")
|
||||||
|
|
||||||
|
file(GLOB_RECURSE SRC src/*.cpp)
|
||||||
|
add_library(i3ipc++ ${SRC})
|
||||||
|
|
||||||
|
target_include_directories(i3ipc++
|
||||||
|
PUBLIC
|
||||||
|
${I3IPCpp_INCLUDE_DIRS}
|
||||||
|
PRIVATE
|
||||||
|
${JSONCPP_INCLUDE_DIRS}
|
||||||
|
${i3ipc++_SOURCE_DIR}/include/i3ipc++
|
||||||
|
)
|
||||||
|
|
||||||
|
link_directories(i3ipc++
|
||||||
|
PUBLIC
|
||||||
|
${I3IPCpp_LIBRARY_DIRS}
|
||||||
|
PRIVATE
|
||||||
|
${JSONCPP_LIBRARY_DIRS}
|
||||||
)
|
)
|
||||||
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wextra -Wno-unused-parameter")
|
target_link_libraries(i3ipc++
|
||||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g3 -DDEBUG")
|
PUBLIC
|
||||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O2")
|
${I3IPCpp_LIBRARIES}
|
||||||
|
|
||||||
file(GLOB_RECURSE SRC src/*.cpp)
|
|
||||||
add_library(i3ipc++_static STATIC ${SRC})
|
|
||||||
|
|
||||||
set(I3IPCpp_LIBRARY_DIRS ${CMAKE_CURRENT_BINARY_DIR} ${SIGCPP_LIBRARY_DIRS})
|
|
||||||
set(I3IPCpp_INCLUDE_DIRS
|
|
||||||
${SIGCPP_INCLUDE_DIRS}
|
|
||||||
${PROJECT_SOURCE_DIR}/3rd/auss/include
|
|
||||||
${PROJECT_SOURCE_DIR}/include/
|
|
||||||
)
|
)
|
||||||
set(I3IPCpp_LIBRARIES i3ipc++_static ${SIGCPP_LIBRARIES} ${JSONCPP_LIBRARIES})
|
|
||||||
|
|
||||||
|
target_compile_options(i3ipc++
|
||||||
|
PUBLIC -std=c++11 -Wall -Wextra -Wno-unused-parameter
|
||||||
|
)
|
||||||
|
|
||||||
|
if (CMAKE_BUILD_TYPE EQUAL "DEBUG")
|
||||||
|
target_compile_options(i3ipc++
|
||||||
|
PUBLIC -g3
|
||||||
|
)
|
||||||
|
target_compile_definitions(i3ipc++
|
||||||
|
PRIVATE DEBUG=1
|
||||||
|
)
|
||||||
|
elseif (CMAKE_BUILD_TYPE EQUAL "RELEASE")
|
||||||
|
target_compile_options(i3ipc++
|
||||||
|
PUBLIC -O2
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# set(I3IPCpp_LIBRARIES i3ipc++ ${SIGCPP_LIBRARIES} ${JSONCPP_LIBRARIES})
|
||||||
|
|
||||||
|
set(I3IPCpp_LIBRARY_DIRS "${I3IPCpp_LIBRARY_DIRS} ${PROJECT_BINARY_DIR}")
|
||||||
|
set(I3IPCpp_LIBRARIES "${I3IPCpp_LIBRARIES};i3ipc++")
|
||||||
|
|
||||||
|
get_directory_property(HAS_PARENT_DIRECTORY PARENT_DIRECTORY)
|
||||||
|
if(HAS_PARENT_DIRECTORY)
|
||||||
set(I3IPCpp_LIBRARY_DIRS ${I3IPCpp_LIBRARY_DIRS} PARENT_SCOPE)
|
set(I3IPCpp_LIBRARY_DIRS ${I3IPCpp_LIBRARY_DIRS} PARENT_SCOPE)
|
||||||
set(I3IPCpp_INCLUDE_DIRS ${I3IPCpp_INCLUDE_DIRS} PARENT_SCOPE)
|
set(I3IPCpp_INCLUDE_DIRS ${I3IPCpp_INCLUDE_DIRS} PARENT_SCOPE)
|
||||||
set(I3IPCpp_LIBRARIES ${I3IPCpp_LIBRARIES} PARENT_SCOPE)
|
set(I3IPCpp_LIBRARIES ${I3IPCpp_LIBRARIES} PARENT_SCOPE)
|
||||||
|
endif()
|
||||||
|
|
||||||
if(I3IPCpp_BUILD_EXAMPLES)
|
if(I3IPCpp_BUILD_EXAMPLES)
|
||||||
add_subdirectory(${PROJECT_SOURCE_DIR}/examples)
|
add_subdirectory(${i3ipc++_SOURCE_DIR}/examples)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(I3IPCpp_WITH_TESTS)
|
if(I3IPCpp_WITH_TESTS)
|
||||||
find_package(CxxTest)
|
find_package(CxxTest)
|
||||||
if(CXXTEST_FOUND)
|
if(CXXTEST_FOUND)
|
||||||
include_directories(${CXXTEST_INCLUDE_DIR})
|
|
||||||
include_directories(src/)
|
|
||||||
add_definitions(
|
add_definitions(
|
||||||
-DTEST_SRC_ROOT="${PROJECT_SOURCE_DIR}/test"
|
-DTEST_SRC_ROOT="${i3ipc++_SOURCE_DIR}/test"
|
||||||
)
|
)
|
||||||
|
|
||||||
enable_testing()
|
enable_testing()
|
||||||
file(GLOB SRC_TEST test/*.hpp)
|
file(GLOB SRC_TEST test/*.hpp)
|
||||||
CXXTEST_ADD_TEST(i3ipcpp_check test.cpp ${SRC_TEST})
|
CXXTEST_ADD_TEST(i3ipcpp_check test.cpp ${SRC_TEST})
|
||||||
target_link_libraries(i3ipcpp_check ${I3IPCpp_LIBRARIES})
|
target_compile_options(i3ipcpp_check
|
||||||
|
PUBLIC -std=c++11 -Wall -Wextra -Wno-unused-parameter -g3
|
||||||
|
)
|
||||||
|
target_compile_definitions(i3ipcpp_check
|
||||||
|
PRIVATE DEBUG=1
|
||||||
|
)
|
||||||
|
|
||||||
|
target_include_directories(i3ipcpp_check
|
||||||
|
PUBLIC
|
||||||
|
${I3IPCpp_INCLUDE_DIRS}
|
||||||
|
PRIVATE
|
||||||
|
${JSONCPP_INCLUDE_DIRS}
|
||||||
|
${i3ipc++_SOURCE_DIR}/include/i3ipc++
|
||||||
|
)
|
||||||
|
|
||||||
|
link_directories(i3ipcpp_check
|
||||||
|
PUBLIC
|
||||||
|
${I3IPCpp_LIBRARY_DIRS}
|
||||||
|
)
|
||||||
|
|
||||||
|
target_link_libraries(i3ipcpp_check
|
||||||
|
PUBLIC
|
||||||
|
${I3IPCpp_LIBRARIES}
|
||||||
|
)
|
||||||
else()
|
else()
|
||||||
message(WARNING "CxxTest not found. Unable to run unit-tests")
|
message(WARNING "CxxTest not found. Unable to run unit-tests")
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
Reference in New Issue
Block a user