set(TARGET_NAME ${PROJECT_NAME}) message(STATUS "Configuring ${TARGET_NAME}") # Build configuration configure_file( ${CMAKE_CURRENT_LIST_DIR}/Version.h.in ${CMAKE_CURRENT_LIST_DIR}/Version.h) set(${PROJECT_NAME}_SOURCES "main.cpp") set(${PROJECT_NAME}_INCLUDES "Version.h") set(${PROJECT_NAME}_INCLUDE_DIRS "") set(${PROJECT_NAME}_DEPENDENCIES "") # Find all subdirectories set(SUBDIRS_LIST "") SubDirList(${CMAKE_CURRENT_LIST_DIR} SUBDIRS_LIST) foreach(SUBDIR IN LISTS SUBDIRS_LIST) if (NOT ${PROJECT_NAME}_BUILD_SUBDIR_${SUBDIR}) option(${PROJECT_NAME}_BUILD_SUBDIR_${SUBDIR} "Build ${SUBDIR} subdirectory" ON) endif() if(${PROJECT_NAME}_BUILD_SUBDIR_${SUBDIR}) file(GLOB SUBDIR_SOURCES ${CMAKE_CURRENT_LIST_DIR}/${SUBDIR}/*.cc ${CMAKE_CURRENT_LIST_DIR}/${SUBDIR}/*.cpp) list(APPEND ${PROJECT_NAME}_SOURCES ${SUBDIR_SOURCES}) file(GLOB SUBDIR_INCLUDES ${CMAKE_CURRENT_LIST_DIR}/${SUBDIR}/*.h) list(APPEND ${PROJECT_NAME}_INCLUDES ${SUBDIR_INCLUDES}) list(APPEND ${PROJECT_NAME}_INCLUDE_DIRS ${CMAKE_CURRENT_LIST_DIR}/${SUBDIR}) endif() endforeach() add_executable(${TARGET_NAME} ${${PROJECT_NAME}_SOURCES} ${${PROJECT_NAME}_INCLUDES}) if(NOT ${${PROJECT_NAME}_DEPENDENCIES}) add_dependencies(${TARGET_NAME} ${${PROJECT_NAME}_DEPENDENCIES}) target_link_libraries(${TARGET_NAME} ${${PROJECT_NAME}_DEPENDENCIES}) endif() #include_directories(${CMAKE_CURRENT_LIST_DIR}) #target_include_directories(${TARGET_NAME} PUBLIC ${CMAKE_CURRENT_LIST_DIR}) install(TARGETS ${TARGET_NAME} PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${TARGET_NAME}/ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${TARGET_NAME}/ ARCHIVE DESTINATION ${CMAKE_INSTALL_SHAREDSTATEDIR}) message(STATUS "") message(STATUS "${TARGET_NAME} summary") message(STATUS "") foreach(SUBDIR IN LISTS SUBDIRS_LIST) message(STATUS "Build subdirectory ${SUBDIR}: \t \t ${${PROJECT_NAME}_BUILD_SUBDIR_${SUBDIR}}") endforeach() message(STATUS "")