From 837fffc13fe1d9c9d72792664a7edefb393fa093 Mon Sep 17 00:00:00 2001 From: Stephan Schulz <stephan.schulz-x2q@rub.de> Date: Tue, 19 Jan 2021 16:46:46 +0100 Subject: [PATCH] add CMake example using add_subdirectory --- CMakeLists.txt | 5 +--- example/CMakeProjectSubdir/ALL_Staggered.cpp | 1 + .../CMakeProjectSubdir/ALL_Staggered_f.F90 | 1 + example/CMakeProjectSubdir/CMakeLists.txt | 30 +++++++++++++++++++ .../all_contains_source_tree | 0 example/CMakeProjectSubdir/build_all.sh | 3 ++ src/CMakeLists.txt | 4 +-- 7 files changed, 38 insertions(+), 6 deletions(-) create mode 120000 example/CMakeProjectSubdir/ALL_Staggered.cpp create mode 120000 example/CMakeProjectSubdir/ALL_Staggered_f.F90 create mode 100644 example/CMakeProjectSubdir/CMakeLists.txt create mode 100644 example/CMakeProjectSubdir/all_contains_source_tree create mode 100755 example/CMakeProjectSubdir/build_all.sh diff --git a/CMakeLists.txt b/CMakeLists.txt index 922931a..aeb6c57 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -97,13 +97,10 @@ endif(CM_ALL_USE_F08 AND MPI_Fortran_HAVE_F08_MODULE) if(CM_ALL_VORONOI) message(STATUS "compiling voro++ version in contrib/voro++") add_subdirectory(contrib/voro++) - # set(CM_ALL_VORO_INC contrib/voro++/include) - # set(CM_ALL_VORO_LIB contrib/voro++/src) - #set(CM_ALL_VORO_LIB "-L${CMAKE_BINARY_DIR}/contrib/voro++/src -lvoro") add_compile_options("-DALL_VORONOI_ACTIVE") endif() -set(STB_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/contrib/stb) +set(STB_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/contrib/stb) add_subdirectory(src) add_subdirectory(example) diff --git a/example/CMakeProjectSubdir/ALL_Staggered.cpp b/example/CMakeProjectSubdir/ALL_Staggered.cpp new file mode 120000 index 0000000..8bca7c2 --- /dev/null +++ b/example/CMakeProjectSubdir/ALL_Staggered.cpp @@ -0,0 +1 @@ +../ALL_Staggered.cpp \ No newline at end of file diff --git a/example/CMakeProjectSubdir/ALL_Staggered_f.F90 b/example/CMakeProjectSubdir/ALL_Staggered_f.F90 new file mode 120000 index 0000000..824e45e --- /dev/null +++ b/example/CMakeProjectSubdir/ALL_Staggered_f.F90 @@ -0,0 +1 @@ +../ALL_Staggered_f.F90 \ No newline at end of file diff --git a/example/CMakeProjectSubdir/CMakeLists.txt b/example/CMakeProjectSubdir/CMakeLists.txt new file mode 100644 index 0000000..a7afacc --- /dev/null +++ b/example/CMakeProjectSubdir/CMakeLists.txt @@ -0,0 +1,30 @@ +# REMEMBER TO SET CC AND CXX! CMake is too dumb to find compiler in your path! +# mkdcd build +# CC=gcc CXX=g++ cmake -DALL_DIR=`pwd`/../../jall_bin/lib/cmake/ALL ../ + +cmake_minimum_required(VERSION 3.14) +project(ExampleProject) + +enable_language(CXX) +enable_language(Fortran) +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF) + +set(CM_ALL_FORTRAN ON) +#set(CM_ALL_USE_F08 ON) +set(CM_ALL_VORONOI ON) +#set(CM_ALL_VTK_OUTPUT ON) + +add_subdirectory(all) + +#find_package(MPI REQUIRED COMPONENTS CXX Fortran) + +add_executable(EALL_Staggered ALL_Staggered.cpp) +target_link_libraries(EALL_Staggered PRIVATE ALL) + +add_executable(EALL_Staggered_f ALL_Staggered_f.F90) +target_link_libraries(EALL_Staggered_f LINK_PRIVATE ALL) +target_link_libraries(EALL_Staggered_f LINK_PRIVATE ALL_fortran) +set_property(TARGET EALL_Staggered_f PROPERTY LINKER_LANGUAGE Fortran) +#todo(s.schulz): link against MPI diff --git a/example/CMakeProjectSubdir/all_contains_source_tree b/example/CMakeProjectSubdir/all_contains_source_tree new file mode 100644 index 0000000..e69de29 diff --git a/example/CMakeProjectSubdir/build_all.sh b/example/CMakeProjectSubdir/build_all.sh new file mode 100755 index 0000000..960c622 --- /dev/null +++ b/example/CMakeProjectSubdir/build_all.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +rm -rf build && CC=gcc CXX=g++ cmake -S . -B build && VERBOSE=1 cmake --build build diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 2218648..e8aca7b 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,4 +1,4 @@ -set(ALL_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/include) +set(ALL_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../include) set(ALL_HEADER_FILES ${ALL_INCLUDE_DIR}/ALL_CustomExceptions.hpp ${ALL_INCLUDE_DIR}/ALL_Defines.h @@ -43,7 +43,7 @@ install(FILES ${ALL_HEADER_FILES} DESTINATION include) if (CM_ALL_FORTRAN) - set(CMAKE_Fortran_MODULE_DIRECTORY ${CMAKE_BINARY_DIR}/modules) + set(CMAKE_Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/../modules) add_library (ALL_fortran ALL_module.F90) set_property(TARGET ALL_fortran PROPERTY LINKER_LANGUAGE Fortran) -- GitLab