gctl_toolkits/CMakeLists.txt
2025-05-13 08:40:01 +08:00

139 lines
4.3 KiB
CMake
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

cmake_minimum_required(VERSION 3.15.2)
project(GCTL_TOOLKITS VERSION 2.0)
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
# ExprTK库在macOS 15.4中编译会有错误 添加以下命令对应检查项
add_compile_options(-Wno-missing-template-arg-list-after-template-kw)
endif()
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3")
find_package(PkgConfig)
pkg_search_module(EDITLINE QUIET libeditline)
find_package(GCTL QUIET)
find_package(GCTL_MESH QUIET)
find_package(GCTL_OPTIMIZATION QUIET)
find_package(GCTL_POTENTIAL QUIET)
include_directories(${GCTL_INC_DIR})
include_directories(${GCTL_MESH_INC_DIR})
include_directories(${GCTL_OPTIMIZATION_INC_DIR})
include_directories(${GCTL_POTENTIAL_INC_DIR})
message(STATUS "Platform: " ${CMAKE_HOST_SYSTEM_NAME})
message(STATUS "Install prefix: " ${CMAKE_INSTALL_PREFIX})
message(STATUS "Processor: " ${CMAKE_HOST_SYSTEM_PROCESSOR})
if(GCTL_FOUND)
message(STATUS "GCTL Version: " ${GCTL_VERSION})
endif()
if(GCTL_MESH_FOUND)
message(STATUS "GCTL_MESH Version: " ${GCTL_MESH_VERSION})
endif()
if(GCTL_OPTIMIZATION_FOUND)
message(STATUS "GCTL_OPTIMIZATION Version: " ${GCTL_OPTIMIZATION_VERSION})
endif()
if(GCTL_POTENTIAL_FOUND)
message(STATUS "GCTL_POTENTIAL Version: " ${GCTL_POTENTIAL_VERSION})
endif()
# 传递安装地址给编译期宏变量
option(GCTL_TOOLKITS_INSTALL_PREFIX "Pass install directory." ON)
set(DIR_VAR ${CMAKE_INSTALL_PREFIX})
# 加入一个头文件配置让cmake对源码进行操作
configure_file(
"${PROJECT_SOURCE_DIR}/config.h.in"
"${PROJECT_SOURCE_DIR}/gctl_toolkits_config.h"
)
macro(add_toolkit name lib1 lib2 lib3 lib4)
aux_source_directory(${name} ${name}_src)
add_executable(${name} ${${name}_src})
set_target_properties(${name} PROPERTIES INSTALL_RPATH /usr/local/lib)
set_target_properties(${name} PROPERTIES CXX_STANDARD 17 CXX_STANDARD_REQUIRED ON)
if(${lib1})
target_link_libraries(${name} PUBLIC ${GCTL_LIB})
endif()
if(${lib2})
target_link_libraries(${name} PUBLIC ${GCTL_MESH_LIB})
endif()
if(${lib3})
target_link_libraries(${name} PUBLIC ${GCTL_OPTIMIZATION_LIB})
endif()
if(${lib4})
target_link_libraries(${name} PUBLIC ${GCTL_POTENTIAL_LIB})
endif()
install(TARGETS ${name} RUNTIME DESTINATION sbin)
endmacro()
if(GCTL_FOUND)
add_toolkit(addnoise ON OFF OFF OFF)
add_toolkit(cutprofile ON OFF OFF OFF)
add_toolkit(fractopo ON OFF OFF OFF)
add_toolkit(gm3d ON OFF OFF OFF)
add_toolkit(gmsh2vtk ON OFF OFF OFF)
add_toolkit(gmshinfo ON OFF OFF OFF)
add_toolkit(grd2xyz ON OFF OFF OFF)
add_toolkit(handyman ON OFF OFF OFF)
add_toolkit(nc2other ON OFF OFF OFF)
add_toolkit(ncget ON OFF OFF OFF)
add_toolkit(ncinfo ON OFF OFF OFF)
add_toolkit(shc2xyz ON OFF OFF OFF)
add_toolkit(sph2plane ON OFF OFF OFF)
add_toolkit(tetgen2gmsh ON OFF OFF OFF)
add_toolkit(trackline ON OFF OFF OFF)
add_toolkit(triangle2gmsh ON OFF OFF OFF)
add_toolkit(txtinfo ON OFF OFF OFF)
add_toolkit(xyz2nc ON OFF OFF OFF)
add_toolkit(xyz2sph ON OFF OFF OFF)
endif()
if(GCTL_FOUND AND GCTL_MESH_FOUND)
add_toolkit(2minfo ON ON OFF OFF)
endif()
if(GCTL_FOUND AND GCTL_OPTIMIZATION_FOUND)
add_toolkit(slbsi ON OFF ON OFF)
add_toolkit(lbsi ON OFF ON OFF)
add_toolkit(lki ON OFF ON OFF)
add_toolkit(levy_planner ON OFF ON OFF)
endif()
if(GCTL_FOUND AND GCTL_OPTIMIZATION_FOUND AND GCTL_POTENTIAL_FOUND)
add_toolkit(tetgm ON OFF ON ON)
endif()
if(EDITLINE_FOUND AND GCTL_FOUND)
add_toolkit(dsviewer ON OFF OFF OFF)
target_link_libraries(dsviewer PRIVATE ${EDITLINE_LIBRARIES})
file(GLOB HELP_DOC dsviewer/dsviewer.md)
install(FILES ${HELP_DOC} DESTINATION sbin/share)
endif()
if(EDITLINE_FOUND AND GCTL_FOUND AND GCTL_MESH_FOUND)
add_toolkit(gridmanager ON ON OFF OFF)
target_link_libraries(gridmanager PRIVATE ${EDITLINE_LIBRARIES})
file(GLOB HELP_DOC gridmanager/readme_gridmanager.md)
install(FILES ${HELP_DOC} DESTINATION sbin/share)
endif()
if(EDITLINE_FOUND AND GCTL_FOUND AND GCTL_POTENTIAL_FOUND)
add_toolkit(gridmanager-potential ON ON OFF ON)
target_link_libraries(gridmanager-potential PRIVATE ${EDITLINE_LIBRARIES})
file(GLOB HELP_DOC gridmanager-potential/readme_gridmanager_potential.md)
install(FILES ${HELP_DOC} DESTINATION sbin/share)
endif()