cmake
lainegates
think more, code less.
展开
-
cmake 编译后无明显错误,但提示找不到 pthread
cmake 构建工程,完成后,没有明显错误,但就是提示"Configuration failed"。经过仔细检查,出错原因和"Error.log"提示完全没关系!解决办法:仔细检查刚修改过的 CMakeLists.txt ,一定有调用出错/少写内容的地方错误文件"Error.log"的错误类似下文:Performing C SOURCE FILE Test CMAKE_HAVE_LIBC_PTHREAD failed with the following output:Change Dir:原创 2021-11-26 16:53:13 · 4200 阅读 · 4 评论 -
cmake : 详解find_package
参考cmake官方文档find_package()有两种用法:Basic Signature and Module Mode和Full Signature and Config Mode。前者在cmake自带的Modules目录下查找Find<PackageName>.cmake后者在所有搜索目录里找<PackageName>Config.cmake或者<PackageName>-config.cmake。Basic Modefind_package(<P原创 2020-08-26 20:48:46 · 862 阅读 · 0 评论 -
cmake: 生成库的配置和版本信息,做成独立的库
原来一直自己写库的导出信息,但看qt的库引用方式非常好,今天仔细研究了下,弄明白了一部分,记录下。使用cmake功能生成配置文件其实,cmake早已做好了这部分工作,只是之前没注意到这个功能。输入库的配置用法很简单:install(TARGETS myexe EXPORT myproj DESTINATION bin) # 设置这个库的输出名为`myproj`install(EXPORT myproj NAMESPACE mp_ DESTINATION lib/myproj) # 输出配置,配置原创 2020-08-26 20:07:30 · 3416 阅读 · 0 评论 -
cmake : add_library详解
add_library是写cmake必备的一个函数,但一直没仔细研究过,今天把它折解下。主要参考cmake官方文档normal libraryadd_library(<name> [STATIC | SHARED | MODULE] [EXCLUDE_FROM_ALL] [source1] [source2 ...])添加名为name的库,库的源文件可指定,也可用target_sources()后续指定。库的类型是STATIC(静态库)原创 2020-08-26 19:04:54 · 118761 阅读 · 4 评论 -
CMake 默认编译、链接选项
CMake 默认编译、链接选项转自链接cmake_minimum_required(VERSION 3.2)message(STATUS "CMAKE_C_FLAGS = " ${CMAKE_C_FLAGS})message(STATUS "CMAKE_C_FLAGS_DEBUG = " ${CMAKE_C_FLAGS_DEBUG})message(STATUS "CMAKE_C_FL...转载 2019-09-19 22:10:05 · 2522 阅读 · 0 评论 -
CMAKE_MODULE_PATH 与 CMAKE_PREFIX_PATH
两个cmake参数很像,查看了官方文档CMAKE_PREFIX_PATH是以分号分隔的列表,供find_package(), find_program(), find_library(), find_file()和find_path()使用,初始为空,由用户设定CMAKE_PREFIX_PATH 官方链接CMAKE_MODULE_PATH是以分号分隔的列表,供include()或 find_...原创 2019-05-15 18:12:50 · 23862 阅读 · 0 评论 -
CMAKE 变量管理
变量分类CMake的变量有其作用域,分全局作用域和局部作用域。局部作用域变化:1.在切换目录(即CMakeLists.txt变化)2.调用函数时变化3.macro不改变作用域。局部变量设置变量set(<variable> <value>... [PARENT_SCOPE])如set(<var "ABC" PARENT_SCOPE) # PAREN...原创 2019-05-05 15:59:57 · 6100 阅读 · 0 评论 -
CMAKE_INSTALL_PREFIX无效的解决方案
今天写一段cmake脚本,使用了变量CMAKE_INSTALL_PREFIX,命令如下:SET(CMAKE_INSTALL_PREFIX <path> )但无论怎么调整这行代码的位置,就是不好使,CMAKE_INSTALL_PREFIX还是指向默认目录。于是google查找,最终找到了解决方案帖子大致意思:直接使用set命令,访问的变量是基于PROJECT命令,这样的变量可能...原创 2019-05-02 14:24:10 · 9690 阅读 · 0 评论 -
cmake 处理 dllexport
cmake处理dllexport十分方便,总体分两步。在cmake文件中配置宏GENERATE_EXPORT_HEADER是cmake提供的函数,用来生成dllexport头文件。使用方法如下:GENERATE_EXPORT_HEADER( myDLL # dll文件名 EXPORT_MACRO_NAME MYDLLExports # export 宏 EXPORT_FILE_NAM...原创 2018-11-09 16:41:30 · 3646 阅读 · 0 评论 -
cmake 获取已添加的目录
在include_directories()后,获取已经添加的目录get_property(dirs DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY INCLUDE_DIRECTORIES)foreach(dir ${dirs}) message(STATUS "dir='${dir}'")endforeach()...原创 2018-05-15 16:05:24 · 2842 阅读 · 0 评论 -
cmake 设置 visual studio 小技巧
在实际使用中,发现了几个使用cmake设置visual studio项目的小技巧.1 设置工作目录项目设置时经常要加载一些配置文件,而visual studio 的配置文件.vcxproj 中包含 LocalDebuggerWorkingDirectory 属性,设置了项目工作目录。 为了方便用vs调试程序,cmake给出设置方法set_target_properties(M...原创 2018-02-22 12:00:29 · 4545 阅读 · 0 评论 -
cmake 常用设定及函数
设定输出目录 变量 内容 备注 EXECUTABLE_OUTPUT_PATH 可执行文件输出目录 set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin) CMAKE_ARCHIVE_OUTPUT_DIRECTORY 设置静态库输出目录 set(CMAKE_ARCHIVE_OUTPUT_DIRECT原创 2018-01-28 22:41:28 · 5242 阅读 · 0 评论 -
CMake 简明教程(1)---第一个例子
原文网址:http://cmake.org/cmake/help/cmake_tutorial.html工作中总是免不了要使用cmake,这真是一个神翻译 2014-06-17 14:45:39 · 3612 阅读 · 0 评论 -
CMake 简明教程(5)---编译中使用间接生成的文件
在这一节中,我们会展示如何在项目的编译过程中使用一个间接生成的文件。例如我们建立一个保存事先计算好的平方根的表做为编译的一部分,之后将这个表编译到我们的应用中。要完成这一功能,我们首先需要一个程序生成这个表。我们用在MathFunctions子目录下新建的MakeTable.cxx来完成这一工作:翻译 2014-06-17 15:10:54 · 2499 阅读 · 0 评论 -
CMake 简明教程(4)---添加系统检测
原文网址:http://cmake.org/cmake/help/cmake_tutorial.html教程中所有的代码都可以在这里找到:http://public.kitware.com/cgi-bin/viewcvs.cgi/CMake/Tests/Tutorial/这一节,让我们考虑这种情况,我们的工程使用了一些目标平台不支持的代码。下面的例子中我们会添加翻译 2014-06-17 15:02:35 · 2707 阅读 · 2 评论 -
CMake 简明教程(2)---编译库文件
这一次,我们会给我们的工程添加一个库。这个库包含我们自定义的计算实数平方根的函数。之后工程编译出的可执行文件会使用这个库的平方根计算函数,而不是在Toturial.cxx文件中include一个函数。这次我们将生成这个库的代码放到一个叫MathFunctions的子目录。CMakeLists.txt需要包含如下行:翻译 2014-06-17 14:51:56 · 3575 阅读 · 0 评论 -
CMake 简明教程(6)---生成安装文件
接下来,设想我们想发布我们的项目以便他人使用。我们想在很多平台上发布编译结果和代码。这个过程和之前的安装(install)和测试不同。这个例子中我们会编译出类似于cygwin,debian,rpm等支持安装和包管理的安装包。要完成这一功能,我们要使用CPack来生成对应平台的安装包。在代码上,我们需要在顶层CMakeLists.txt中添加几行:翻译 2014-06-17 15:15:47 · 7360 阅读 · 0 评论 -
CMake 简明教程(3)---安装及测试
原文网址:http://cmake.org/cmake/help/cmake_tutorial.html教程中所有的代码都可以在这里找到:http://public.kitware.com/cgi-bin/viewcvs.cgi/CMake/Tests/Tutorial/这一节中,我们会为项目添加安装和测试规则。安装规则(install rule)可直接添加,对于linux和m翻译 2014-06-17 14:58:07 · 3301 阅读 · 2 评论 -
使用cmake建立QT工程
国外大牛的实例:http://qt-project.org/quarterly/view/using_cmake_to_build_qt_projects 对于QT而言一般是采用qmake来配置工程,优点是简单直接。在许多工程开发中,QT常常会与其他的工程结合使用,这样qmake就难以管理工程。这里主要介绍使用CMake来配置QT工程。使用CMake优点之一是可以将代码文件和工程文件分离,...转载 2013-08-01 14:12:48 · 7627 阅读 · 3 评论