X-Git-Url: https://git.teslayout.com/public/public/public/?p=anna.git;a=blobdiff_plain;f=CMakeLists.txt;h=fdeaae9f72f163413b593dcf4137d084bfdcc03a;hp=a4bc412281da110aaaa4033db4256286ef6d4f38;hb=a8d544da1a0edc1910835d4c9f89f22f57103b9b;hpb=ec9c52668a43af61eb0c4e1f72bc69db78378e86 diff --git a/CMakeLists.txt b/CMakeLists.txt index a4bc412..fdeaae9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,6 +14,9 @@ set(VERSION_MAJOR 1) set(VERSION_MINOR 0) set(VERSION_PATCH 0) +# Dynamic libraries not linked to build tree: +set(CMAKE_SKIP_RPATH TRUE) + # Build type: if(NOT CMAKE_BUILD_TYPE) message(WARNING "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel.") @@ -63,18 +66,25 @@ message(STATUS "The c++ compiler is ${CMAKE_CXX_COMPILER}") 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 -Wwrite-strings -Wno-unknown-pragmas -Wno-sign-compare -Wno-maybe-uninitialized -Wno-unused -Wno-reorder") + 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 -Wwrite-strings -Wno-unknown-pragmas -Wno-sign-compare -Wno-maybe-uninitialized -Wno-unused -Wno-reorder -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() @@ -101,7 +111,7 @@ ENDMACRO() add_definitions(-DLDAP_DEPRECATED) # General includes: -include_directories(include/anna) +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include) include_directories(/usr/include/libxml2) include_directories(/usr/lib/oracle/12.1/client64/include) @@ -110,8 +120,8 @@ SUBDIRLIST(SUBDIRS ${CMAKE_CURRENT_SOURCE_DIR}/source) FOREACH(subdir ${SUBDIRS}) message(STATUS "Processing library at: source/${subdir}") file(GLOB_RECURSE SRCS source/${subdir}/*.cpp) - add_library(${subdir}_static STATIC ${SRCS}) - add_library(${subdir}_shared SHARED ${SRCS}) + add_library(anna_${subdir}_static STATIC ${SRCS}) + add_library(anna_${subdir}_shared SHARED ${SRCS}) ENDFOREACH() # @@ -124,18 +134,15 @@ FOREACH(procedure ${DYNAMIC_PROCEDURES}) message(STATUS "Processing dynamic library at: dynamic/launcher/${rel}") file(GLOB_RECURSE SRCS dynamic/launcher/${rel}/*.cpp) - add_library(launcher_procedure_${libpath}_shared SHARED ${SRCS}) - set(target_dirname build/${CMAKE_BUILD_TYPE}/lib/dynamic_launcher/${libpath}) - set(target_basename launcher_procedure_${libpath}_shared) + add_library(anna_launcher_procedure_${libpath}_shared SHARED ${SRCS}) + + set(target_dirname build/${CMAKE_BUILD_TYPE}/lib/dynamic/launcher/${rel}) + + set(target_basename anna_launcher_procedure_${libpath}_shared) set_target_properties(${target_basename} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${target_dirname}) #file(RENAME ${target_dirname}/lib${target_basename}.so ${target_dirname}/libprocedure.so) ENDFOREACH() -# Linking example: -#file(GLOB_RECURSE SRCS ${CMAKE_CURRENT_SOURCE_DIR}/example/core/genLogon/*.cpp) -#add_executable(genLogon ${SRCS}) -#target_link_libraries(genLogon core_static app_static core_static test_static xml_static io_static crypto xml2 rt) - # Generalization: # SUBDIRLIST(MODULES ${CMAKE_CURRENT_SOURCE_DIR}/example) @@ -148,8 +155,8 @@ FOREACH(module ${MODULES}) file(GLOB_RECURSE SRCS ${CMAKE_CURRENT_SOURCE_DIR}/example/${module}/${subdir}/*.cpp) # Executable - set(target "${module}_${subdir}") - add_executable(${target} "${SRCS}") + set(target "anna_${module}_${subdir}") + add_executable(${target} ${SRCS}) set_target_properties(${target} PROPERTIES LINKER_LANGUAGE CXX) set(libraries_file "${CMAKE_CURRENT_SOURCE_DIR}/example/${module}/${subdir}/libraries.txt") set(includes_file "${CMAKE_CURRENT_SOURCE_DIR}/example/${module}/${subdir}/includes.txt") @@ -179,42 +186,48 @@ ENDFOREACH() # -enable_testing() -find_package(GTest REQUIRED) -include_directories(${GTEST_INCLUDE_DIRS}) +find_package(GTest) +IF(GTest_FOUND) -SUBDIRLIST(MODULES ${CMAKE_CURRENT_SOURCE_DIR}/test) -FOREACH(module ${MODULES}) + enable_testing() + include_directories(${GTEST_INCLUDE_DIRS}) - message(STATUS "Processing basic test at: test/${module}") + SUBDIRLIST(MODULES ${CMAKE_CURRENT_SOURCE_DIR}/test) + FOREACH(module ${MODULES}) - # Sources - file(GLOB_RECURSE SRCS ${CMAKE_CURRENT_SOURCE_DIR}/test/${module}/*.cpp) + message(STATUS "Processing basic test at: test/${module}") - # Executable - set(target "test_${module}") - add_executable(${target} "${SRCS}") - target_link_libraries(${target} ${GTEST_BOTH_LIBRARIES} pthread) - set(libraries_file "${CMAKE_CURRENT_SOURCE_DIR}/test/${module}/libraries.txt") + # Sources + file(GLOB_RECURSE SRCS ${CMAKE_CURRENT_SOURCE_DIR}/test/${module}/*.cpp) - if(EXISTS "${libraries_file}") - file (STRINGS "${libraries_file}" LIBS) - #message(STATUS "Libraries: ${LIBS}") - target_link_libraries(${target} ${GTEST_BOTH_LIBRARIES} pthread ${LIBS}) - endif() + # Executable + set(target "anna_test_${module}") + add_executable(${target} ${SRCS}) + target_link_libraries(${target} ${GTEST_BOTH_LIBRARIES} pthread) + set(libraries_file "${CMAKE_CURRENT_SOURCE_DIR}/test/${module}/libraries.txt") - add_test(${target} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${target}) + if(EXISTS "${libraries_file}") + file (STRINGS "${libraries_file}" LIBS) + #message(STATUS "Libraries: ${LIBS}") + target_link_libraries(${target} ${GTEST_BOTH_LIBRARIES} pthread ${LIBS}) + endif() -ENDFOREACH() + add_test(${target} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${target}) + + ENDFOREACH() +ENDIF(GTest_FOUND) # Install +SET(MY_OWN_INSTALL_PREFIX "/opt/anna" CACHE PATH "Prefix prepended to install directories") +SET(CMAKE_INSTALL_PREFIX "${MY_OWN_INSTALL_PREFIX}" CACHE INTERNAL "Prefix prepended to install directories" FORCE) + 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) +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) @@ -222,11 +235,11 @@ install(FILES ${LIBRARIES} DESTINATION lib) # Add target for API documentation with Doxygen find_package(Doxygen) -if(DOXYGEN_FOUND) -add_custom_target(doc - ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/docs/doxygen/Doxyfile - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/docs/doxygen - COMMENT "Generating API documentation with Doxygen" VERBATIM -) -endif(DOXYGEN_FOUND) +IF(Doxygen_FOUND) + add_custom_target(doc + ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/docs/doxygen/Doxyfile + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/docs/doxygen + COMMENT "Generating API documentation with Doxygen" VERBATIM + ) +ENDIF(Doxygen_FOUND)