找到一些实现
https://graphics.rwth-aachen.de:9000/OpenFlipper-Free/OpenFlipper-Free/blob/ps/cmake/FindGMP.cmake
https://gitlab.inria.fr/batsim/batsched/blob/master/cmake/Modules/FindGMP.cmake
https://intellij-support.jetbrains.com/hc/en-us/community/posts/360004135300-How-to-use-GMP-with-Cmake-on-CLion-
https://www.reddit.com/r/cmake/comments/4qozat/how_to_use_gmp/
https://github.com/rhalstea/p4c/blob/052f00935b72c106dbc87c1be1dabd19e6844d1d/cmake/FindLibGmp.cmake

然后参考 FindSQLite3.cmake 自己写了一个
最后的用法

find_package(GMP REQUIRED)
target_link_libraries(guile  GMP::GMP)

实现代码
见:https://github.com/PikachuHy/guile/blob/1.8-cmake/cmake/FindGMP.cmake

#[=======================================================================[.rst:
FindGMP
-----------Find the GMP librariesIMPORTED targets
^^^^^^^^^^^^^^^^This module defines the following :prop_tgt:`IMPORTED` target:``GMP::GMP``Result variables
^^^^^^^^^^^^^^^^This module will set the following variables if found:``GMP_INCLUDE_DIRS``where to find gmp.h, etc.
``GMP_LIBRARIES``the libraries to link against to use GMP.
``GMP_VERSION``version of the GMP library found
``GMP_FOUND``TRUE if found#]=======================================================================]# Look for the necessary header
find_path(GMP_INCLUDE_DIR NAMES gmp.h)
mark_as_advanced(GMP_INCLUDE_DIR)# Look for the necessary library
find_library(GMP_LIBRARY NAMES gmp libgmp)
mark_as_advanced(GMP_LIBRARY)if(GMP_INCLUDE_DIR)file(STRINGS ${GMP_INCLUDE_DIR}/gmp.h __GNU_MP_VERSION_ver_lineREGEX "^#define __GNU_MP_VERSION  *[0-9]"LIMIT_COUNT 1)file(STRINGS ${GMP_INCLUDE_DIR}/gmp.h __GNU_MP_VERSION_MINOR_ver_lineREGEX "^#define __GNU_MP_VERSION_MINOR  *[0-9]"LIMIT_COUNT 1)file(STRINGS ${GMP_INCLUDE_DIR}/gmp.h __GNU_MP_VERSION_PATCHLEVEL_ver_lineREGEX "^#define __GNU_MP_VERSION_PATCHLEVEL  *[0-9]"LIMIT_COUNT 1)string(REGEX MATCH "[0-9]" GMP_VERSION_MAJOR "${__GNU_MP_VERSION_ver_line}")string(REGEX MATCH "[0-9]" GMP_VERSION_MINOR "${__GNU_MP_VERSION_MINOR_ver_line}")string(REGEX MATCH "[0-9]" GMP_VERSION_PATCH "${__GNU_MP_VERSION_PATCHLEVEL_ver_line}")set(GMP_VERSION "${GMP_VERSION_MAJOR}.${GMP_VERSION_MINOR}.${GMP_VERSION_PATCH}")
endif()include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(GMPREQUIRED_VARS GMP_INCLUDE_DIR GMP_LIBRARYVERSION_VAR GMP_VERSION)# Create the imported target
if(GMP_FOUND)set(GMP_INCLUDE_DIRS ${GMP_INCLUDE_DIR})set(GMP_LIBRARIES ${GMP_LIBRARY})if(NOT TARGET GMP::GMP)add_library(GMP::GMP UNKNOWN IMPORTED)set_target_properties(GMP::GMP PROPERTIESIMPORTED_LOCATION             "${GMP_LIBRARY}"INTERFACE_INCLUDE_DIRECTORIES "${GMP_INCLUDE_DIR}")endif()
endif()

参考
https://gitlab.com/graphviz/graphviz/blob/master/cmake/FindLTDL.cmake
https://cmake.org/pipermail/cmake/2010-June/037579.html
https://github.com/nest/nest-simulator/blob/master/cmake/FindLTDL.cmake
https://github.com/fzi-forschungszentrum-informatik/schunk_svh_driver/blob/master/icmaker/CMakeModules/FindLtdl.cmake

Usage


find_package(Math REQUIRED)
find_package(LTDL REQUIRED)
target_link_libraries(guile  Math::Math LTDL::LTDL)

code:
https://github.com/PikachuHy/guile/blob/1.8-cmake/cmake/FindLTDL.cmake
https://github.com/PikachuHy/guile/blob/1.8-cmake/cmake/FindMath.cmake

#[=======================================================================[.rst:
FindLTDL
-----------Find the LTDL librariesIMPORTED targets
^^^^^^^^^^^^^^^^This module defines the following :prop_tgt:`IMPORTED` target:``LTDL::LTDL``Result variables
^^^^^^^^^^^^^^^^This module will set the following variables if found:``LTDL_INCLUDE_DIRS``where to find ltdl.h, etc.
``LTDL_LIBRARIES``the libraries to link against to use ltdl.
``LTDL_VERSION``version of the ltdl library found
``LTDL_FOUND``TRUE if found#]=======================================================================]# Look for the necessary header
find_path(LTDL_INCLUDE_DIR NAMES ltdl.h)
mark_as_advanced(LTDL_INCLUDE_DIR)# Look for the necessary library
find_library(LTDL_LIBRARY NAMES ltdl)
mark_as_advanced(LTDL_LIBRARY)find_program(LIBTOOL_EXECUTABLENAMES glibtool libtool libtoolize)
if ( NOT LIBTOOL_EXECUTABLE STREQUAL "LIBTOOL_EXECUTABLE-NOTFOUND" )execute_process(COMMAND ${LIBTOOL_EXECUTABLE} --versionRESULT_VARIABLE RESULTOUTPUT_VARIABLE LTDL_VAR_OUTPUTOUTPUT_STRIP_TRAILING_WHITESPACE)if ( RESULT EQUAL 0 )string( REGEX REPLACE ".* ([0-9]+\\.[0-9]+\\.[0-9]+).*" "\\1"LTDL_VERSION ${LTDL_VAR_OUTPUT} )endif ()
endif ()include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(LTDLREQUIRED_VARS LTDL_INCLUDE_DIR LTDL_LIBRARYVERSION_VAR LTDL_VERSION)# Create the imported target
if(LTDL_FOUND)set(LTDL_INCLUDE_DIRS ${LTDL_INCLUDE_DIR})set(LTDL_LIBRARIES ${LTDL_LIBRARY})if(NOT TARGET LTDL::LTDL)add_library(LTDL::LTDL UNKNOWN IMPORTED)set_target_properties(LTDL::LTDL PROPERTIESIMPORTED_LOCATION             "${LTDL_LIBRARY}"INTERFACE_INCLUDE_DIRECTORIES "${LTDL_INCLUDE_DIR}")endif()
endif()
# https://android.googlesource.com/platform/external/eigen/+/master/cmake/FindStandardMathLibrary.cmake
# Look for the necessary library
# Look for the necessary header
find_path(MATH_INCLUDE_DIR NAMES math.h)
mark_as_advanced(MATH_INCLUDE_DIR)# Look for the necessary library
find_library(MATH_LIBRARY NAMES m libm)
mark_as_advanced(MATH_LIBRARY)
include(CheckCSourceCompiles)
set(find_math_library_test_program"#include<math.h>
int main() { sin(0.0); log(0.0f); }")
set(CMAKE_REQUIRED_FLAGS "")
set(CMAKE_REQUIRED_LIBRARIES "m")
check_c_source_compiles("${find_math_library_test_program}"math_library_linked_to_as_m)
if(math_library_linked_to_as_m)include(FindPackageHandleStandardArgs)find_package_handle_standard_args(Math REQUIRED_VARS MATH_LIBRARY)
endif()# Create the imported target
if(Math_FOUND)set(MATH_LIBRARIES ${MATH_LIBRARY})if(NOT TARGET Math::Math)add_library(Math::Math UNKNOWN IMPORTED)set_target_properties(Math::Math PROPERTIESIMPORTED_LOCATION             "${MATH_LIBRARY}")endif()
endif()

从autotool迁移到cmake相关推荐

  1. CMake学习(一)

    什么是 CMake 你或许听过好几种 Make 工具,例如 GNU Make ,QT 的 qmake ,微软的 MS nmake,BSD Make(pmake),Makepp,等等.这些 Make 工 ...

  2. [转] CMake入门

    转载说明: 文章转自网络,版权归原作者所有, 原文链接: https://www.hahack.com/codes/cmake/ 特别感谢发哥(写代码的篮球痴 )分享 文章目录 ▌什么是 CMake? ...

  3. 分享一篇很不错的CMake入门文章,值得收藏细读!

    https://www.hahack.com/codes/cmake/ ▌什么是 CMake? 你或许听过好几种 Make 工具,例如 GNU Make ,QT 的 qmake ,微软的 MS nma ...

  4. CMake和Make——简介和对比

    转自:https://my.oschina.net/xunxun/blog/86781 大家都知道,写程序大体步骤为: 1. 用编辑器编写源代码,如.c文件. 2. 用编译器编译代码生成目标文件,如. ...

  5. android cmake 打印_Android NDK 开发:CMake 使用

    1. 前言 当在做 Android NDK 开发时,如果不熟悉用 CMake 来构建,读不懂 CMakeLists.txt 的配置脚本,很容易就会踩坑,遇到编译失败,一个很小的配置问题都会浪费很多时间 ...

  6. [转](转载+整理)超详细的cmake教程

    cmake教程 参考 什么是cmake cmake 常见语法罗列 CMake可用变量 入门案例 单个源文件 多个源文件 同一目录,多个源文件 多个目录,多个源文件 进阶案例 自定义编译选项 指定安装和 ...

  7. CMake 入门实战,从实例入手,讲解 CMake 的常见用法,例如aux_source_directory的用法

    http://www.hahack.com/codes/cmake/ https://sourceforge.net/projects/qmake2cmake/ --qmake转换cmake小工具 什 ...

  8. CMake的理论与实践

    目录 1.什么是CMake 2 CMake有什么优缺点? 3.CMake 到底多好用? CMake 配置方法 4.CMake使用注意事项 5.CMake常用指令介绍 CMake如何查询指令? 6. 静 ...

  9. (转载+整理)超详细的cmake教程

    cmake教程 参考 什么是cmake cmake 常见语法罗列 CMake可用变量 入门案例 单个源文件 多个源文件 同一目录,多个源文件 多个目录,多个源文件 进阶案例 自定义编译选项 指定安装和 ...

  10. TensorFlow 2.7 正式版上线,改进 TF/Keras 调试,支持 Jax 模型到 TensorFlow Lite转换

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 转自 | 机器之心 TensorFlow2.7 正式发布,新版本包括对 tf.kera ...

最新文章

  1. 吴恩达 coursera ML 第二课总结+作业答案
  2. Oracle的if else if
  3. 【DP】饥饿的WZK(jzoj 1998)
  4. 将不确定变为确定~头压缩是否有必要,MVC如何实现头压缩
  5. 【Spring 基础注解】对象创建相关注解、注入相关注解、注解扫描详解
  6. Hibernate 继承映射可能会遇到的错误
  7. minecraftjava版光追_我的世界:网易版终于更新狐狸生物?Java版光追技术已开始测试?...
  8. TFT工业串口屏方案
  9. NOIP2016普及组复赛 解题分析
  10. 《吴军.科技史纲60讲》摘录
  11. 自建公众号服务器开发教程,01-微信公众号开发入门篇
  12. android 闪屏 实现,Android游戏闪屏实现步骤详解
  13. asp.net+mvc+html辅助,ASP.NET MVC使用Ajax的辅助的解决方法
  14. 旋光效应可视检测液体的浓度(附MATLAB代码)
  15. 服务器系统才有卷影副本吗,windows server 2019没有适合具有卷影副本的卷
  16. BI神器Power Query(2)-- PQ数据源
  17. 通过网格拆分高德地图
  18. 七彩虹 pci内存控制器 感叹号 蓝屏 DPC_WATCHDOG_VIOLATION
  19. 汽车专用示波器检测喷油嘴(汽油机)波形信号及分析
  20. debian10.9离线安装haproxy(附离线安装包)

热门文章

  1. 【随笔】稚晖君软件硬件环境总结
  2. 基于Android Studio和Gradle 的小米便签配置和安装
  3. PySide2将控制台内容打印到textEdit控件
  4. Java链表-链表反转
  5. FDDB评估工具使用
  6. linux scp传输文件权限被拒绝,Linux的远程传输文件scp及出现Permission denied (publickey).lost connection问题解决方法-Go语言中文社区...
  7. 查看python源码位置方法以及潜在误区
  8. iOS 百度地图与高德地图经纬度转换(坐标转换)
  9. vue开发app项目实例
  10. 《基于运算放大器和模拟集成电路的电路设计》PDF云盘资源分享