set(CMAKE_BUILD_TYPE "Release" CACHE STRING
"Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel." FORCE)
endif(NOT CMAKE_BUILD_TYPE)
+message(STATUS "CMAKE_BUILD_TYPE = ${CMAKE_BUILD_TYPE}")
# Build output directory:
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY build/${CMAKE_BUILD_TYPE}/bin)
message(STATUS "The build type is ${CMAKE_BUILD_TYPE}")
# Example how to set c++ compiler flags for GNU
+message(STATUS "CMAKE_CXX_COMPILER_ID = ${CMAKE_CXX_COMPILER_ID}")
if(CMAKE_CXX_COMPILER_ID MATCHES GNU)
#execute_process(COMMAND g++ --version >/dev/null 2>/dev/null)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wno-unknown-pragmas -Wno-sign-compare -Woverloaded-virtual -Wwrite-strings -Wno-unused")
- set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g3")
- set(CMAKE_CXX_FLAGS_RELEASE "-O3")
+ set(CMAKE_CXX_COMPILER "/usr/bin/g++")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wno-unknown-pragmas -Wno-sign-compare -Woverloaded-virtual -Wwrite-strings -Wno-unused")
+ set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g3")
+ set(CMAKE_CXX_FLAGS_MINSIZEREL "-Os -DNDEBUG")
+ set(CMAKE_CXX_FLAGS_RELEASE "-O3")
+ set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g")
elseif(CMAKE_CXX_COMPILER_ID MATCHES Clang)
#execute_process(COMMAND clang++ --version >/dev/null 2>/dev/null)
add_definitions(-DIS_CLANG)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wno-unknown-pragmas -Wno-sign-compare -Woverloaded-virtual -Wwrite-strings -Wno-unused -Wno-parentheses-equality")
- set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g3")
- set(CMAKE_CXX_FLAGS_RELEASE "-O3")
+ set(CMAKE_CXX_COMPILER "/usr/bin/clang++")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wno-unknown-pragmas -Wno-sign-compare -Woverloaded-virtual -Wwrite-strings -Wno-unused -Wno-parentheses-equality")
+ set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g3")
+ set(CMAKE_CXX_FLAGS_MINSIZEREL "-Os -DNDEBUG")
+ set(CMAKE_CXX_FLAGS_RELEASE "-O3")
+ set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g")
endif()
# <test>
-find_package(Boost COMPONENTS system filesystem REQUIRED)
+enable_testing()
+find_package(GTest REQUIRED)
+include_directories(${GTEST_INCLUDE_DIRS})
+
SUBDIRLIST(MODULES ${CMAKE_CURRENT_SOURCE_DIR}/test)
FOREACH(module ${MODULES})
file(GLOB_RECURSE SRCS ${CMAKE_CURRENT_SOURCE_DIR}/test/${module}/*.cpp)
# Executable
- set(target "${module}")
- find_package(Boost COMPONENTS system filesystem unit_test_framework REQUIRED)
+ set(target "test_${module}")
add_executable(${target} "${SRCS}")
- set_target_properties(${target} PROPERTIES LINKER_LANGUAGE CXX)
-
-
- set(libraries_file "${CMAKE_CURRENT_SOURCE_DIR}/example/${module}/${subdir}/libraries.txt")
+ target_link_libraries(${target} ${GTEST_BOTH_LIBRARIES} pthread)
+ set(libraries_file "${CMAKE_CURRENT_SOURCE_DIR}/test/${module}/libraries.txt")
if(EXISTS "${libraries_file}")
file (STRINGS "${libraries_file}" LIBS)
#message(STATUS "Libraries: ${LIBS}")
- target_link_libraries(${target} ${Boost_FILESYSTEM_LIBRARY} ${Boost_SYSTEM_LIBRARY} ${LIBS})
+ target_link_libraries(${target} ${GTEST_BOTH_LIBRARIES} pthread ${LIBS})
endif()
- add_test(tester tester)
+ add_test(${target} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${target})
ENDFOREACH()
# Install
-# see http://stackoverflow.com/questions/14084759/keep-a-single-files-permissions-when-using-install-in-cmake
-####set(CMAKE_INSTALL_PREFIX "${CMAKE_SOURCE_DIR}/deploy")
-####install(FILES build/lib/libtools_static.a DESTINATION lib)
-####install(PROGRAMS build/lib/libtools_shared.so DESTINATION lib)
-####install(PROGRAMS build/bin/hello DESTINATION bin)
+message(STATUS "CMAKE_INSTALL_PREFIX = ${CMAKE_INSTALL_PREFIX}")
+# Binaries:
+file(GLOB_RECURSE BINARIES ${CMAKE_CURRENT_SOURCE_DIR}/build/${CMAKE_BUILD_TYPE}/bin/*)
+install(PROGRAMS ${BINARIES} DESTINATION bin)
+# Headers:
+install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/anna/ DESTINATION include)
+# Libraries:
+file(GLOB_RECURSE LIBRARIES ${CMAKE_CURRENT_SOURCE_DIR}/build/${CMAKE_BUILD_TYPE}/lib/*)
+install(FILES ${LIBRARIES} DESTINATION lib)
+
# Add target for API documentation with Doxygen
find_package(Doxygen)