1.cmake常用命令总结
2.opencascade新手教程六在ubuntu22.04下编译opencascade 7.8.0(详解cmake配置)
3.Linux环境源码安装GCC/CMAKE
4.Linux中CMake的码目使用3-不同目录多个源文件
5.win10 cmake源码编译安装opencv(c++,qt)(解决ffmpeg下载失败导致opencv无法处理视频)
6.CMake常用语法总结及使用(收藏)
cmake常用命令总结
以下是关于CMake常用命令的总结,内容涉及目录结构、码目环境变量、码目编译选项、码目CMake函数、码目include指令、码目获取号码源码文件管理、码目链接、码目安装与第三方库管理、码目自定义构建等重要部分。码目这些命令帮助开发者高效地构建和管理C++项目。码目
目录结构方面,码目工程目录下通常包含src(源码文件)、码目bin(可执行文件)和build(编译后文件),码目主工程的码目CMake文件位于project目录下。src文件夹内为声明h文件和定义cpp文件,bin目录下通常存放调用main函数的文件,build目录是编译后生成的可执行文件。
CMake环境变量中,如CMAKE_BUILD_WITH_INSTALL_RPATH可设置运行时库搜索路径。编译选项默认为空,但可通过设置如CMAKE_C_FLAGS或CMAKE_CXX_FLAGS来定义C++编译标准、生成库类型等。
CMake函数包括option、set、message、target_compile_definitions、add_definitions、include、aux_source_directory、file、add_library、target_include_directories、target_link_libraries、Java源码已存在link_directories、add_subdirectory和install等。这些函数分别用于定义选项、设置编译环境、添加源文件、管理依赖库、生成链接等。
include指令用于引入并执行外部CMake代码,FetchContent用于下载、编译和安装第三方依赖库。aux_source_directory函数用于收集指定目录下的源文件,而add_library函数生成库文件。目标头文件路径管理通过target_include_directories命令实现,可以指定为PRIVATE、PUBLIC或INTERFACE。
link_directories命令用于添加链接库的目录,而add_subdirectory函数用于添加子目录并构建其内容。安装文件则使用install命令,可以指定安装路径。find_package函数帮助查找和配置第三方库,FetchContent管理外部库,安装目录和库文件位置可通过CMAKE_INSTALL_PREFIX设置。
Autotools构建系统中,Makefile.in文件用于生成特定于系统和配置的Makefile,而CMakeLists.txt则是CMake构建系统的核心文件。CMakeLists.txt文件定义了项目的构建过程,而Makefile.in则是由Autotools生成,根据配置选项自动生成实际的Makefile。
opencascade新手教程六在ubuntu.下编译opencascade 7.8.0(详解cmake配置)
对于OpenCASCADE新手来说,在Ubuntu .上编译7.8.0版本的步骤相对简单直接。以下是详细的步骤说明:
首先,确保你的系统安装了必要的编译器。然后,内网穿透源码解读安装ccmake这个配置工具,它将帮助我们进行下一步的配置过程。
在源码根目录下创建一个名为"Build"的目录,然后在这个目录下运行ccmake来生成配置文件。ccmake会显示默认的配置信息,这些配置项有助于你指定所需的库路径。例如,USE_XXX开关如果打开,ccmake会自动搜索apt安装的库,但如果你使用的是自编译的第三方库,记得提供3RDPARTY_XXX_DIR的路径。
配置完成后,按"C"键确认设置,然后退出ccmake。接下来,使用"make"命令开始编译,由于OpenCASCADE代码量庞大,可以考虑使用多线程编译,如"make -j4"或"make -j8",其中数字代表线程数,建议根据你的CPU核心数进行调整。
一旦编译完成,可以使用"sudo make install"将库安装到指定的INSTALL_DIR目录。最后,为了验证编译是否成功,你需要进入/usr/local/bin目录并执行draw.sh脚本来测试drawexe。
Linux环境源码安装GCC/CMAKE
为了在Linux环境下源码安装GCC和CMAKE,我们需要遵循详细的步骤和策略。对于GCC源码,我们可以从GitHub-gcc-mirror/gcc获取4.4.6版本。接下来,进入下载后的GCC源代码目录。
在配置和编译GCC时,稳定建站系统源码首先应该明确指定安装的目录,避免冲突。可能在配置脚本时遇到错误,这时候需要解决依赖项问题。分别安装MPFR、MPC和任何其他必要的依赖库。对于GCC8.3及以上版本,内部集成脚本能够简便地获取这些依赖库。
安装库路径后,再次执行配置文件,加入库路径参数,确保安装的每个步骤顺利进行。配置完成后,整个GCC安装过程即宣告成功。
为了测试GCC是否正确安装,遵循指导进行验证。
CMake的安装同样关键,可以通过直接指定需要的GCC版本来简化安装流程。在CMake命令行参数中指定GCC路径也是可行的。
在运行GCC4.4.6编译的程序时,可能存在系统路径问题,这是因为我们选择的是不替换安装方式。因此,需要额外操作,确保所需的库被正确添加到路径中。
遇到GCC多版本引起的ABI兼容问题时,如果编译链接过程中遇到“undefined reference to"“std::__cxx ***””错误,这提示可能是C++ ABI问题。处理方法是,针对GCC5.1之前版本发布的libstdc++中新增的ABI,通过添加定义-D_GLIBCXX_USE_CXX_ABI=0来解决该问题。
对于GDB版本的问题,特别在GCC.1的定位诱导源码使用中,要求C++的编译器,导致了旧版本GDB启动出现Segment Fault。解决办法是升级GDB版本。
附录中提供了一些额外资源,例如Mingw下载,适用于位和位Windows的最新版x_-win-sjlj;CMake下载链接以及GCC的GitHub地址等。遵循这些资源和提示,能够帮助用户顺畅进行Linux环境下的GCC和CMAKE的源码安装与配置。
Linux中CMake的使用3-不同目录多个源文件
上篇介绍了在同一目录下有多个源文件时如何编写CMakeLists.txt。本篇将继续介绍不同目录下有多个源文件时如何编写CMakeLists.txt。
1. 有1个独立文件夹
1.1 文件目录结构
先来看下面这种情况,文件目录结构如下,sum.c、sum.h和main.c的代码内容见前面的文章。
1.2 编写CMakeLists.txt
对于这种情况,CMakeLists.txt可以有不同的写法:
写法1
首先看第一种写法,如下:
这里出现了1个新的命令:include_directories,用来指定头文件的搜索路径
写法2
再来看第二种写法,如下:
可以使用aux_source_directory,将指定目录下的源文件列表存放到变量中
1.3 编译测试
在当前目录执行cmake指令:
cmake后面的点,用来告诉CMake工具在当前目录中搜寻CMakeLists.txt文件。
自动生成makefile文件之后,再使用make指令编译源码:
最后可以看到程序的运行结果。
2. 有多个独立文件夹(情况1)
2.1 文件目录结构
再来看下面这种情况,文件目录结构如下,sum.c、sum.h、main.c的代码内容见前面的文章。
其中sum.c、sum.h、sub.c、sub.h放到func这个文件夹中:
2.2 编写CMakeLists.txt
注意CMakeLists.txt和之前的区别,其实它和上面的“写法2”一样:
2.3 编译测试
按照之前的编译测试流程进行编译测试,结果如下:
3. 有多个独立文件夹(情况2)
3.1 文件目录结构
再来看下面这种情况,文件目录结构如下,sum.c、sum.h、main.c的代码内容见前面的文章。
其中sum.c和sum.h放到sumfunc这个文件夹中,sub.c和sub.h放到subfunc这个文件夹中:
3.2 编写CMakeLists.txt
注意CMakeLists.txt和之前的区别:
这里使用了两个aux_source_directory,将两个目录下的源文件列表分别存放到不同的变量中
3.3 编译测试
按照之前的编译测试流程进行编译测试,结果如下:
4. 总结
本篇介绍了不同目录下有多个源文件时如何编写CMakeLists.txt。
对于不同文件夹下的多个源文件,主要是使用include_directories来添加头文件的搜索目录
另外,仍然可以借助aux_source_directory把指定目录下的所有源文件存列表存放到变量中:
总的来说,一个新的知识点就是include_directories的使用。
win cmake源码编译安装opencv(c++,qt)(解决ffmpeg下载失败导致opencv无法处理视频)
要使用Qt与Windows上的OpenCV,当默认的msvc版本不满足需求时,需要通过源码编译安装,并配合cmake工具。以下是详细的步骤:
首先,下载OpenCV sources版本,同时确保已经安装了cmake编译工具,这里推荐选择对应版本的MinGW版本。在Qt的mingw环境中,需将mingw的bin路径(例如:D:\Programs\Qt\Qt5..\Tools\mingw_\bin)添加到环境变量,验证配置成功可通过在cmd中输入gcc -v。
解压OpenCV到指定位置,创建一个build文件夹。使用cmake-gui,设置源码路径和build文件夹,配置为MinGW Makefiles。初次配置可能遇到问题,如ffmpeg下载失败,这时需要重命名ffmpeg.cmake为ffmpeg.txt,修改其中的下载地址为/。
在cmake-gui中,勾选with_qt和with_opengl,取消opencv_enable_allocator_stats和与python相关的选项。如果需要python支持,可以使用pip安装。配置完成后,再次点击configure并生成makefile,确保所有路径正确。
在build文件夹中,通过mingw-make -j(根据你的CPU核心数设置线程数,例如)开始编译,最后执行mingw-make install。安装后,别忘了将安装路径(如D:\Programs\opencv3.4.\build\install\x\mingw\bin)添加到系统环境变量。
通过这些步骤,你就可以在Qt环境中成功安装并使用OpenCV处理视频了,无需担心ffmpeg下载失败的问题。
CMake常用语法总结及使用(收藏)
以下是CMake常用语法的直观总结和应用实例:
CMake的基本语法开始于设置CMAKE_MINIMUM_REQUIRED(VERSION 3.),确保使用的CMake版本至少为3.。接着,通过PROJECT关键字定义工程名,如PROJECT(HELLO)表示一个默认支持所有语言的项目。
指定特定语言支持的项目,如PROJECT(HELLO CXX)专为C++设计。PROJECT(HELLO C CXX)则同时支持C和C++。
PROJECT指令还定义了预定义变量_BINARY_DIR和_SOURCE_DIR,它们分别对应二进制目录和源码目录。比如,HELLO_BINARY_DIR和HELLO_SOURCE_DIR。
SET关键字用于定义变量,如SET(SRC_LIST main.c),可添加多个文件,如SET(SRC_LIST main.c t1.c t2.c)。MESSAGE关键字用于输出信息,如向终端显示 SRC_LIST 的内容。
CMake的OPTION关键字用于条件编译,比如定义USE_MYMATH,可在configure_file中应用。LIST关键字用于操作列表,如读取、查找和修改列表内容。
ADD_EXECUTABLE用于生成可执行文件,如ADD_EXECUTABLE(hello ${ SRC_LIST}),或简化为PROJECT(HELLO) ADD_EXECUTABLE(hello main.c)。注意,工程名和可执行文件名无关。
ADD_SUBDIRECTORY用于添加子目录,FILE和AUX_SOURCE_DIRECTORY用于搜索文件,而EXECUTABLE_OUTPUT_PATH和LIBRARY_OUTPUT_PATH则用于指定目标二进制文件的路径。
如需创建库或更改头文件和依赖,可以使用ADD_LIBRARY和TARGET_INCLUDE_DIRECTORIES、TARGET_LINK_LIBRARIES等指令。
在CMakeLists.txt中,变量如VAR用于定义项目信息,configure_file用于变量传递到源文件,通过IFDEF或IFDEF语句进行条件编译。
通过实际工程示例,如Hello World工程,展示CMake的配置和编译流程,包括静态库和动态库的构建。
PROJECT_SOURCE_DIR 和 CMAKE_SOURCE_DIR
在 CMake 中,PROJECT_SOURCE_DIR和CMAKE_SOURCE_DIR是两个关键变量,都指向项目的源代码目录。然而,在处理多个项目(包括子项目或多个CMakeLists.txt文件)时,这两个变量的值会有所差异。
例如,考虑以下项目结构:
接着,在项目根目录下执行以下指令:
通过终端输出的Message信息,我们可以观察到在整个项目构建过程中,无论当前处理的哪个CMakeLists.txt,${ CMAKE_SOURCE_DIR}变量始终保持不变,指向项目的根目录。
每当子项目调用project()命令时,都会重新设置${ PROJECT_SOURCE_DIR}。这样,每个子项目都能拥有其独立的源代码目录路径。
Cmake安装和生成opencv的解决方法
Cmake安装步骤:首先,访问Cmake的官方下载页面,根据你的操作系统(如Windows-x_)选择适合的版本进行下载。
下载完成后,将Cmake安装到任意位置,具体步骤这里不再赘述。
运行和生成OpenCV解决方案: 在安装目录的C:\cmake-3..0-windows-x_\bin下,找到并运行cmake-gui.exe。在界面中,点击"where is the source code"右侧的浏览按钮,定位到OpenCV源代码文件夹,通常是F:\opencv\sources。 接着,选择"browse build",指定解决方案生成的路径。点击"configure"进行第一次配置,选择你的编译IDE。如果配置无误,点击"finish",配置完成后进入下一步。 注意,如果路径包含中文字符,可能会出现警告,应避免这种情况。配置完成后,再次点击"configure",默认设置即可,无需额外勾选或取消。 完成第二次配置后,点击"generate",等待"generating done"的提示,表示解决方案生成完成。此时,在之前指定的生成路径下,你会找到opencv.sln文件。 打开解决方案资源管理器,你可以根据自己的需求选择和学习源代码。初次编译可能会出现错误,这是正常现象,因为ALL_BUILD默认为启动项,但不是可以直接执行的。只需在解决方案资源管理器中更改启动项目,问题即可解决。 至此,Cmake生成OpenCV解决方案的全过程已顺利结束。