2024-09-10 20:25:18 +08:00
|
|
|
|
cmake_minimum_required(VERSION 3.15.2)
|
|
|
|
|
|
2025-05-12 10:41:04 +08:00
|
|
|
|
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()
|
2024-09-10 20:25:18 +08:00
|
|
|
|
|
2025-05-12 19:58:45 +08:00
|
|
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3")
|
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3")
|
|
|
|
|
|
|
|
|
|
find_package(PkgConfig)
|
2025-05-13 08:40:01 +08:00
|
|
|
|
pkg_search_module(EDITLINE QUIET libeditline)
|
2025-05-12 19:58:45 +08:00
|
|
|
|
|
2025-05-13 08:40:01 +08:00
|
|
|
|
find_package(GCTL QUIET)
|
|
|
|
|
find_package(GCTL_MESH QUIET)
|
|
|
|
|
find_package(GCTL_OPTIMIZATION QUIET)
|
|
|
|
|
find_package(GCTL_POTENTIAL QUIET)
|
2025-02-11 10:43:28 +08:00
|
|
|
|
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})
|
|
|
|
|
|
2025-05-12 19:58:45 +08:00
|
|
|
|
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"
|
|
|
|
|
)
|
|
|
|
|
|
2025-02-11 10:43:28 +08:00
|
|
|
|
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()
|
|
|
|
|
|
2025-05-12 19:58:45 +08:00
|
|
|
|
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()
|