From 8b2144b28c921459180a2bed70396f2b9579f7a7 Mon Sep 17 00:00:00 2001 From: Soeren Peters <peters@irmb.tu-bs.de> Date: Fri, 26 Jun 2020 09:45:14 +0200 Subject: [PATCH] - add source groups --- CMakeLists.txt | 2 +- cpu/Applications/pChannel/CMakeLists.txt | 17 +- cpu/CMake/VirtualFluidsMacros.cmake | 233 ++++++++++++++--------- cpu/VirtualFluidsBasic/CMakeLists.txt | 3 +- cpu/VirtualFluidsCore/CMakeLists.txt | 4 +- 5 files changed, 155 insertions(+), 104 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 75611ce3e..29c9611b6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,7 @@ if(${CMAKE_VERSION} VERSION_LESS 3.12) cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}) endif() -project(VirtualFluids) +project(VirtualFluids CXX) option(BUILD_VF_CPU "Build VirtualFluids cpu variant" ON) diff --git a/cpu/Applications/pChannel/CMakeLists.txt b/cpu/Applications/pChannel/CMakeLists.txt index 8b5f07fda..f909c9146 100644 --- a/cpu/Applications/pChannel/CMakeLists.txt +++ b/cpu/Applications/pChannel/CMakeLists.txt @@ -1,5 +1,3 @@ -CMAKE_MINIMUM_REQUIRED(VERSION 2.8) - ######################################################## ## C++ PROJECT ### ######################################################## @@ -10,16 +8,17 @@ INCLUDE(${APPS_ROOT}/IncludsList.cmake) ################################################################# ### LOCAL FILES ### ################################################################# -FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h - ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp ) +#FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h +# ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp +# ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp ) -SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES}) -SOURCE_GROUP(src FILES ${SPECIFIC_FILES}) +#SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES}) +#SOURCE_GROUP(src FILES ${SPECIFIC_FILES}) -SET(CAB_ADDITIONAL_LINK_LIBRARIES VirtualFluidsCore VirtualFluidsBasic) +#SET(CAB_ADDITIONAL_LINK_LIBRARIES VirtualFluidsCore VirtualFluidsBasic) ################################################################# ### CREATE PROJECT ### ################################################################# -CREATE_CAB_PROJECT(pchannel BINARY) +#CREATE_CAB_PROJECT(pchannel BINARY) +vf_add_library(BUILDTYPE binary DEPENDS VirtualFluidsCore VirtualFluidsBasic FILES pChannel.cpp) diff --git a/cpu/CMake/VirtualFluidsMacros.cmake b/cpu/CMake/VirtualFluidsMacros.cmake index bc4dbd573..4991051f0 100644 --- a/cpu/CMake/VirtualFluidsMacros.cmake +++ b/cpu/CMake/VirtualFluidsMacros.cmake @@ -21,115 +21,168 @@ function(vf_add_library) set( options ) set( oneValueArgs ) - set( multiValueArgs DEPENDS FOLDER) + set( multiValueArgs BUILDTYPE DEPENDS FILES FOLDER) cmake_parse_arguments( ARG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} ) - #message("${ARG_FOLDER}") + message("Files: ${ARG_FILES}") vf_get_library_name (library_name) - message("${library_name}") + + if (ARG_FILES) + set(sourceFiles ${sourceFiles} ${ARG_FILES}) + endif() if (ARG_FOLDER) foreach(folder ${ARG_FOLDER}) foreach(file ${VIRTUAL_FLUIDS_GLOB_FILES}) set (filePath ${folder}/${file}) #message("${filePath}") - file ( GLOB part_files ${filePath} ) + file (GLOB part_files ${filePath} ) set(sourceFiles ${sourceFiles} ${part_files}) endforeach() endforeach() + endif() + + if (NOT ARG_FILES AND NOT ARG_FOLDER) + file ( GLOB_RECURSE sourceFiles ${VIRTUAL_FLUIDS_GLOB_FILES} ) + endif() - else () - file ( GLOB_RECURSE sourceFiles ${VIRTUAL_FLUIDS_GLOB_FILES} ) -endif() + # foreach(X IN LISTS sourceFiles) + # message(STATUS "${X}") + # endforeach() - foreach(X IN LISTS sourceFiles) - #message(STATUS "${X}") + + # SET SOURCE GROUP + # IF SOURCE GROUP ENABLED + foreach(source ${sourceFiles}) + get_filename_component(source_dir ${source} DIRECTORY) + + if (source_dir) + setSourceGroupForFilesIn(${source_dir} ${library_name}) + endif() endforeach() - set (build_type STATIC) - - - MESSAGE(STATUS "configuring ${library_name} (type=${build_type})...") - - - ################################################################# - ### OS DEFINES ### - ################################################################# - IF(WIN32) - LIST(APPEND CAB_ADDTIONAL_COMPILER_FLAGS -D__WIN__) - ELSEIF(APPLE) - LIST(APPEND CAB_ADDTIONAL_COMPILER_FLAGS -D__APPLE__) - ELSEIF(UNIX) - LIST(APPEND CAB_ADDTIONAL_COMPILER_FLAGS -D__unix__) - ENDIF() - - ################################################################# - ### ADDITIONAL_MAKE_CLEAN_FILES ### - ################################################################# - #SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${GENERATED_FILES}") - - ################################################################# - ### EXCECUTABLE ### - ################################################################# - IF(${build_type} MATCHES BINARY) - ADD_EXECUTABLE(${library_name} ${sourceFiles} ) - ELSEIF(${build_type} MATCHES SHARED) - ADD_LIBRARY(${library_name} SHARED ${sourceFiles} ) - ELSEIF(${build_type} MATCHES STATIC) - ADD_LIBRARY(${library_name} STATIC ${sourceFiles} ) - ELSE() - MESSAGE(FATAL_ERROR "build_type=${build_type} doesn't match BINARY, SHARED or STATIC") - ENDIF() - - ################################################################# - ### ADDITIONAL LINK LIBRARIES ### - ################################################################# + + MESSAGE(STATUS "configuring ${library_name} (type=${ARG_BUILDTYPE})...") + + + ################################################################# + ### OS DEFINES ### + ################################################################# + IF(WIN32) + LIST(APPEND CAB_ADDTIONAL_COMPILER_FLAGS -D__WIN__) + ELSEIF(APPLE) + LIST(APPEND CAB_ADDTIONAL_COMPILER_FLAGS -D__APPLE__) + ELSEIF(UNIX) + LIST(APPEND CAB_ADDTIONAL_COMPILER_FLAGS -D__unix__) + ENDIF() + + ################################################################# + ### ADDITIONAL_MAKE_CLEAN_FILES ### + ################################################################# + #SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${GENERATED_FILES}") + + ################################################################# + ### EXCECUTABLE ### + ################################################################# + IF(${ARG_BUILDTYPE} MATCHES binary) + ADD_EXECUTABLE(${library_name} ${sourceFiles} ) + ELSEIF(${ARG_BUILDTYPE} MATCHES shared) + ADD_LIBRARY(${library_name} shared ${sourceFiles} ) + ELSEIF(${ARG_BUILDTYPE} MATCHES static) + ADD_LIBRARY(${library_name} STATIC ${sourceFiles} ) + ELSE() + MESSAGE(FATAL_ERROR "build_type=${ARG_BUILDTYPE} doesn't match BINARY, SHARED or STATIC") + ENDIF() + + ################################################################# + ### ADDITIONAL LINK LIBRARIES ### + ################################################################# message("Link Depending Libraries: ${ARG_DEPENDS}") if (ARG_DEPENDS) - TARGET_LINK_LIBRARIES(${library_name} ${ARG_DEPENDS}) + target_link_libraries(${library_name} PRIVATE ${ARG_DEPENDS}) + endif() + + IF(CAB_ADDITIONAL_LINK_LIBRARIES) + TARGET_LINK_LIBRARIES(${library_name} PRIVATE ${CAB_ADDITIONAL_LINK_LIBRARIES}) + ENDIF() + + ################################################################# + ### COMPILER Flags ### + ################################################################# + ADD_COMPILER_FLAGS_TO_PROJECT(${CAB_COMPILER} ${library_name} "CXX" ${ARG_BUILDTYPE}) + MESSAGE(STATUS "compiler flags for compiler ${CAB_COMPILER} on machine ${CAB_MACHINE} for project ${project_name} (${ARG_BUILDTYPE}) have been configured") + + IF(CAB_ADDTIONAL_COMPILER_FLAGS) + ADD_TARGET_PROPERTIES(${library_name} COMPILE_FLAGS ${CAB_ADDTIONAL_COMPILER_FLAGS}) + ENDIF() + IF(CAB_ADDTIONAL_COMPILER_FLAGS_DEBUG) + MESSAGE(FATAL_ERROR "COMPILE_FLAGS_DEBUG_<CONFIG> not supported by cmake yet :-(") + ADD_TARGET_PROPERTIES(${library_name} COMPILE_FLAGS_DEBUG ${CAB_ADDTIONAL_COMPILER_FLAGS_DEBUG}) + ENDIF() + IF(CAB_ADDTIONAL_COMPILER_FLAGS_RELEASE) + MESSAGE(FATAL_ERROR "COMPILE_FLAGS_<CONFIG> not supported by cmake yet :-(") + ADD_TARGET_PROPERTIES(${library_name} COMPILE_FLAGS_RELEASE ${CAB_ADDTIONAL_COMPILER_FLAGS_RELEASE}) + ENDIF() + + ################################################################# + ### ADDITIONAL LINK PROPERTIES ### + ################################################################# + IF(CAB_ADDITIONAL_LINK_FLAGS) + ADD_TARGET_PROPERTIES(${library_name} LINK_FLAGS ${CAB_ADDITIONAL_LINK_FLAGS}) + ENDIF() + IF(CAB_ADDITIONAL_LINK_FLAGS_DEBUG) + ADD_TARGET_PROPERTIES(${library_name} LINK_FLAGS_DEBUG ${CAB_ADDITIONAL_LINK_FLAGS_DEBUG}) + ENDIF() + IF(CAB_ADDITIONAL_LINK_FLAGS_RELEASE) + ADD_TARGET_PROPERTIES(${library_name} LINK_FLAGS_RELEASE ${CAB_ADDITIONAL_LINK_FLAGS_RELEASE}) + ENDIF() + + #SET(project_name ${library_name} CACHE STRING "name of binary") + + MESSAGE(STATUS "configuring ${library_name} (type=${ARG_BUILDTYPE})... done") + +endfunction(vf_add_library) + + + + +macro(setSourceGroupForFilesIn package_dir targetName) + #input: target_name PACKAGE_SRCS + buildSourceGroup(${targetName} ${package_dir}) + + if(isAllTestSuite) + source_group(${targetName}\\${SOURCE_GROUP} FILES ${source}) + else() + source_group(${SOURCE_GROUP} FILES ${source}) endif() + #output: - +endmacro(setSourceGroupForFilesIn) - IF(CAB_ADDITIONAL_LINK_LIBRARIES) - TARGET_LINK_LIBRARIES(${library_name} ${CAB_ADDITIONAL_LINK_LIBRARIES}) - ENDIF() - - ################################################################# - ### COMPILER Flags ### - ################################################################# - message (${CAB_COMPILER}) - ADD_COMPILER_FLAGS_TO_PROJECT(${CAB_COMPILER} ${library_name} "CXX" ${build_type}) - MESSAGE(STATUS "compiler flags for compiler ${CAB_COMPILER} on machine ${CAB_MACHINE} for project ${project_name} (${build_type}) have been configured") - - IF(CAB_ADDTIONAL_COMPILER_FLAGS) - ADD_TARGET_PROPERTIES(${library_name} COMPILE_FLAGS ${CAB_ADDTIONAL_COMPILER_FLAGS}) - ENDIF() - IF(CAB_ADDTIONAL_COMPILER_FLAGS_DEBUG) - MESSAGE(FATAL_ERROR "COMPILE_FLAGS_DEBUG_<CONFIG> not supported by cmake yet :-(") - ADD_TARGET_PROPERTIES(${library_name} COMPILE_FLAGS_DEBUG ${CAB_ADDTIONAL_COMPILER_FLAGS_DEBUG}) - ENDIF() - IF(CAB_ADDTIONAL_COMPILER_FLAGS_RELEASE) - MESSAGE(FATAL_ERROR "COMPILE_FLAGS_<CONFIG> not supported by cmake yet :-(") - ADD_TARGET_PROPERTIES(${library_name} COMPILE_FLAGS_RELEASE ${CAB_ADDTIONAL_COMPILER_FLAGS_RELEASE}) - ENDIF() - - ################################################################# - ### ADDITIONAL LINK PROPERTIES ### - ################################################################# - IF(CAB_ADDITIONAL_LINK_FLAGS) - ADD_TARGET_PROPERTIES(${library_name} LINK_FLAGS ${CAB_ADDITIONAL_LINK_FLAGS}) - ENDIF() - IF(CAB_ADDITIONAL_LINK_FLAGS_DEBUG) - ADD_TARGET_PROPERTIES(${library_name} LINK_FLAGS_DEBUG ${CAB_ADDITIONAL_LINK_FLAGS_DEBUG}) - ENDIF() - IF(CAB_ADDITIONAL_LINK_FLAGS_RELEASE) - ADD_TARGET_PROPERTIES(${library_name} LINK_FLAGS_RELEASE ${CAB_ADDITIONAL_LINK_FLAGS_RELEASE}) - ENDIF() - - SET(project_name ${library_name} CACHE STRING "name of binary") - - MESSAGE(STATUS "configuring ${library_name} (type=${build_type})... done") - - -endfunction(vf_add_library) \ No newline at end of file + + + +macro(buildSourceGroup targetName path) + #input: targetName (e.g. lib name, exe name) + + unset(SOURCE_GROUP) + string(REPLACE "/" ";" folderListFromPath ${path}) + set(findTargetName 0) + + foreach(folder ${folderListFromPath}) + if(findTargetName) + set(SOURCE_GROUP ${SOURCE_GROUP}\\${folder}) + endif() + + if(${folder} STREQUAL ${targetName}) + SET(findTargetName 1) + endif() + endforeach() + + if(NOT SOURCE_GROUP) + set(SOURCE_GROUP "general") + endif() + message("Source group: ${SOURCE_GROUP}") + #output: SOURCE_GROUP +endmacro(buildSourceGroup) \ No newline at end of file diff --git a/cpu/VirtualFluidsBasic/CMakeLists.txt b/cpu/VirtualFluidsBasic/CMakeLists.txt index dcf15e335..ea3869ed7 100644 --- a/cpu/VirtualFluidsBasic/CMakeLists.txt +++ b/cpu/VirtualFluidsBasic/CMakeLists.txt @@ -18,7 +18,8 @@ SET(CAB_ADDITIONAL_LINK_LIBRARIES ${MPI_LIBRARY}) INCLUDE_DIRECTORIES(${SOURCE_ROOT}/VirtualFluidsCore) INCLUDE_DIRECTORIES(${MPI_INCLUDE_PATH}) -vf_add_library(FOLDER +vf_add_library(BUILDTYPE static + FOLDER ${CMAKE_CURRENT_LIST_DIR}/numerics/geometry3d ${CMAKE_CURRENT_LIST_DIR}/numerics/geometry3d/Creator ${CMAKE_CURRENT_LIST_DIR}/numerics/geometry3d/KdTree diff --git a/cpu/VirtualFluidsCore/CMakeLists.txt b/cpu/VirtualFluidsCore/CMakeLists.txt index 47bcdef2c..2e7fab9f9 100644 --- a/cpu/VirtualFluidsCore/CMakeLists.txt +++ b/cpu/VirtualFluidsCore/CMakeLists.txt @@ -1,5 +1,3 @@ -CMAKE_MINIMUM_REQUIRED(VERSION 3.10) - ################################################################# ### PACKAGES ### @@ -97,7 +95,7 @@ message("CAB_ADDITIONAL_LINK_LIBRARIES: " ${CAB_ADDITIONAL_LINK_LIBRARIES}) #CREATE_CAB_PROJECT(VirtualFluids STATIC) include (${PROJECT_SOURCE_DIR}/CMake/VirtualFluidsMacros.cmake) -vf_add_library(DEPENDS VirtualFluidsBasic) +vf_add_library(BUILDTYPE static DEPENDS VirtualFluidsBasic) vf_get_library_name(library_name) target_include_directories(${library_name} PRIVATE ${SOURCE_ROOT}/VirtualFluidsBasic) -- GitLab