# Set the directory of where the source code is located. set(src_path src) set(header_path include) if (UNIX) #name mangling, these functions are generated by the FortranCInterface cmake package and might be system dependent include(FortranCInterface) FortranCInterface_HEADER("${CMAKE_CURRENT_SOURCE_DIR}/include/FortranCInterface.h" MACRO_NAMESPACE "FC_") #produce a config.h to be included configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake.in ${CMAKE_CURRENT_SOURCE_DIR}/include/config.h) set(configFile "${CMAKE_CURRENT_SOURCE_DIR}/include/config.h") include_directories(${NETCDF_INCLUDEDIR}) add_definitions(-DD3D_PLUGIN_EXT=".so") add_definitions(-DHAVE_STRUCT_TIMESPEC) endif(UNIX) # Set version file variables set(absolute_header_path "${CMAKE_CURRENT_SOURCE_DIR}/${header_path}") set(ini_version_file "${absolute_header_path}/version_number.ini") set(rc_version_file "${absolute_header_path}/dimr_lib_version.rc") set(header_version_file "${absolute_header_path}/dimr_lib_version.h") # Generate the version files generate_version_files(${rc_version_file} ${ini_version_file}) generate_version_files(${header_version_file} ${ini_version_file}) # Gather source files file(GLOB source ${src_path}/*.cpp) file(GLOB headers ${header_path}/*.h) # Define library include_directories(${header_path}) set(library_name dimr_lib) add_library(${library_name} SHARED ${source} ${headers} ${ini_version_file} ${rc_version_file} ${header_version_file}) # Define prebuild events prebuild_version_number(${library_name} ${rc_version_file} ${checkout_src_root} ${ini_version_file}) prebuild_version_number(${library_name} ${header_version_file} ${checkout_src_root} ${ini_version_file}) if(UNIX) set(oss_dependencies deltares_common_c expat) oss_include_libraries(${library_name} oss_dependencies) target_compile_definitions(${library_name} PRIVATE LINUX64) target_include_directories(${library_name} PRIVATE ${header_path} "${expat_include_path}") target_link_libraries(${library_name} ${oss_dependencies}) target_link_directories(${library_name} PRIVATE ${NETCDF_LIBRARY_DIRS}) target_compile_options(${library_name} PRIVATE ${cpp_compiler_flags}) endif() if(WIN32) set(oss_dependencies deltares_common_c) oss_include_libraries(${library_name} oss_dependencies) # Define output name set_target_properties(${library_name} PROPERTIES OUTPUT_NAME dimr_dll) # Define preprocessor definitions target_compile_definitions(${library_name} PRIVATE WIN32;_WINDOWS;_USRDLL;DIMR_EXPORTS) target_compile_definitions(${library_name} PRIVATE $<$:_DEBUG>) target_include_directories(${library_name} PRIVATE ${header_path} "${expat_include_path}" "${mpi_include_path}" "${checkout_src_root}/third_party_open/netcdf/${netcdf_version}/include" "${checkout_src_root}/third_party_open/pthreads/include/x64") # Set the linker properties target_link_directories(${library_name} PRIVATE "${checkout_src_root}/third_party_open/netcdf/${netcdf_version}/lib" "${expat_library_path_win}" "${mpi_library_path}" "${checkout_src_root}/third_party_open/pthreads/bin/x64") target_link_libraries(${library_name} ${oss_dependencies} netcdf "${mpi_c_library}" "libexpat.lib" "pthreadVC2.lib" "wsock32.lib" "netapi32.lib") endif() # Create the vfproj structure source_group(TREE "${CMAKE_CURRENT_SOURCE_DIR}" FILES ${source} ${headers} ${rc_version_file}) set_target_properties (${library_name} PROPERTIES FOLDER engines_gpl/dimr) # post-build set(install_dir ${CMAKE_BINARY_DIR}) set(build_dir ${CMAKE_BINARY_DIR}) post_build_target( ${library_name} ${install_dir} ${build_dir} ${checkout_src_root} ${library_name} ) install(TARGETS ${library_name} DESTINATION lib)