首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

CMake 秘籍(七)

我们使用 CMake 的标准命令cmake_parse_arguments来解析这些参数: function(add_doxygen_doc) set(options) set(oneValueArgs...这些生成器可以使用cmake -G来选择,例如: $ cmake -G "Visual Studio 15 2017" 并非所有生成器在每个平台上都可用,根据 CMake 运行的平台,通常只有一部分可用...在本章中,我们将专注于在 Windows 平台上进行开发。我们将演示如何直接使用 Visual Studio 15 2017 构建 CMake 项目,而不使用命令行。...在本节中,我们将在 Windows 上构建 Windows 二进制文件,我们的目标是配置和构建以下示例代码(hello-world.cpp): #include #include 在 Windows 计算机上,我们可以观察到以下输出: Hello from Windows 如您所见,该二进制文件在 Windows 上运行!

20100
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    面向 C++ 的现代 CMake 教程(二)

    完成后,CMake 将为我们的选择构建工具生成一个构建系统并运行它。源文件将与彼此以及它们的依赖项编译和链接,以产生输出工件。...在一台机器上编译代码,然后在另一台机器上运行,这被称为交叉编译。你可以(使用正确的工具集)在 Windows 机器上运行 CMake 来为 Android 编译应用程序。...以下是add_custom_target()命令的完整签名: add_custom_target(Name [ALL] [command1 [args1...]]...在 Linux 上,最流行的格式是可执行和可链接格式(ELF)。Windows 使用 PE/COFF 格式规范。在 macOS 上,我们会找到 Mach 对象(Mach-O 格式)。...如果不建议在目标声明中使用变量,我们如何才能在例如处理特定平台的实现文件(如gui_linux.cpp和gui_windows.cpp)时条件性地添加源文件呢?

    70500

    小白入门笔记:CMake编译过程详解

    不管是在IDE 中构建,还是直接从命令行构建,还照顾到构建后阶段。即使前面所有的环境都不同,持续集成/持续部署(CI/CD) 流水也可以轻松地使用相同的CMake 配置,并使用单一标准构建项目。...即,若使用ENV 变量作为指令的参数,这些值将在CMake生成构建系统期间(配置阶段+生成阶段)插入,并且会将其嵌入到构建树中,在构建系统完成后即使再通过脚本或者命令行修改环境变量ENV{<variable...2.3 实用指令 2.3.1 message() 指令 CMake中打印指令,也就是message() 指令是用于将文本打印到标准输出,并且CMake通过提供MODE 参数,可以自定义输出的样式,并且在出现错误的情况下...这个命令非常适合脚本,也可以在配置阶段的项目中使用。...回看第一个例子,这里并不再为可执行文件提供单个源文件,我们现在将引入一个类,用来包装要打印到屏幕上的消息。

    6.6K31

    【C++】基础:代码编译与构建工具介绍

    选择合适的 C++ 编译与构建工具取决于项目的具体需求。 以下是一些建议: 对于小型项目,可以使用简单的命令行工具进行编译和链接。 对于大型项目,建议使用构建工具自动化编译和链接过程。...cmake 在大型工程的编译时,一版使用cmake,对应的编译文件是CMakeList.txt。...CMake可以生成Makefile或Visual Studio项目文件等,使开发人员可以在不同的平台和编译器上使用相同的配置文件进行构建。...3.26.3-windows-x86_64.msi Linux安装cmake: # 安装 sudo apt-get install cmake # 验证版本 cmake --version 常用命令:...使用示例: cmake -DCMAKE_BUILD_TYPE=Debug 注释用#,大小写不分,用message来输出信息,用set()来定义变量,用math()来进行数学计算。

    27210

    面向 C++ 的现代 CMake 教程(一)

    在 Windows 上,我们还需要一个构建工具来完成由 CMake 启动的构建过程。...为了检查你的系统上可用的生成器,请使用以下命令: cmake --help 在help打印输出结束时,你应该看到一个完整的列表,如下所示: Windows 10 上有许多生成器可供选择: The following...把它当作一种一致的跨平台工作方式:不用在 Linux 上使用 bash 脚本,在 Windows 上使用批处理或 PowerShell 脚本,你可以有一个版本。...在本章中,我们将涵盖以下主要主题: CMake 语言基础语法 使用变量 使用列表 理解 CMake 中的控制结构 有用命令 技术要求 你可以在 GitHub 上找到本章中存在的代码文件...在本节中,我们将简要介绍对脚本最有用的命令。 message()命令 我们已经知道并喜欢我们可靠的message()命令,它将文本打印到标准输出。然而,它的内涵远不止所见。

    1.3K01

    cmake基本使用

    为什么要用cmake?makefile的语法非常复杂,光文档就有200多页,使用起来不方便,只支持linux平台,而cmake语法只有几页,用法通俗易懂,上手简单,代码量少,跨平台。...这也是大多数人使用cmake的原因 cmake默认使用CMakeLists.txt文件作为编写脚本的文件,下面编写了一个简单的CMakeLists.txt #1.cmake verson,指定cmake...2.方法 project (HELLO) #指定项目名称,生成的VC项目的名称; ---- 使用${HELLO_SOURCE_DIR}表示项目根目录 include_directories:指定头文件的搜索路径...helloDemo demo.cxx demo_b.cxx) #将cxx编译成可执行文件 add_definitions:添加编译参数 ---- add_definitions(-DDEBUG)将在gcc命令行添加...: message( status|fatal_error, “message”): 输出信息 find_library(MY_LIB libmylib.a ./) 在指定目录下搜索一个库, 保存在变量

    1.6K31

    Win64下编译OSG详细过程(Win10+VS2015+OSG3.6.3)

    可以参考《Git安装教程(windows)》来安装git;参考《windows(64位)下使用curl安装》来安装curl;至于7z可以安装7-Zip。...都安装好以后,将download_dependencies.bat加载cmd里面运行,等待下载完成就可以了,注意在cmd里面检查批处理命令的输出结果。...编译完成后单独生成INSTALL工程,编译结果就会自动安装到CMAKE_INSTALL_PREFIX设置的文件夹。 3....注意配置以下几个选项: 1) CMAKE_INSTALL_PREFIX: cmake得到的工程都有install工程,生成之后就会自动把需要的头文件、lib还有dll复制到对应的目录中去,这样方便我们管理...测试环境 看了很多资料基本上都是在安装绝对环境,好处是配置好了本机哪里都可以通过文件名调用,不过坏处是一旦存在相同的dll环境或者换了电脑就麻烦了。

    2.7K30

    面向 C++ 的现代 CMake 教程(四)

    链接你使用的(Link what you use) 以下是 CMake 博客上对 link-what-you-use 的描述: 这是一个内置的 CMake 功能,使用 ld 和 ldd 的选项来输出如果可执行文件链接了比实际需要更多的库...在生成阶段完成后,我们将使用以下命令来构建自定义目标: cmake --build -t valgrind 添加此类目标并不困难: chapter09/03-valgrind/...在本章中,我们将涵盖以下主要主题: 无需安装导出 在系统上安装项目 创建可重用的包 定义组件 使用 CPack 打包 技术要求 您可以在 GitHub 上找到本章的代码文件...使用 CMake 进行安装不仅为所有 CMake 项目引入了一个方便的标准,而且还做了以下事情: 为根据它们的类型提供特定于平台的安装路径(遵循GNU 编码标准) 通过生成目标导出文件,增强安装过程...(COMMAND ldconfig)") endif() if()条件检查命令是否与操作系统匹配(在 Windows 或 macOS 上执行ldconfig是不正确的)。

    67700

    CMake简易指南

    目标编译系统cmake 与Google GN类似,属于meta-build(源编译)系统,有自己的交互语法,使用时需要先将自身的语法翻译成其他编译系统,这个翻译过程称之为configure(配置),在执行配置命令时可以通过...--target install步骤二编译时也可以使用目标编译系统的编译命令触发编译,需要编写跨平台编译脚本时,使用cmake --build .可以适配任何环境配置配置阶段的参数主要为以下几种:-G...**CMakeLists.txt**生效,已不推荐使用,新版有类似面向对象的参数模式该使用方式不利于修改,实际使用中一般会选择 cmake 其他命令还辅助添加,以下为常用命令,注意最低cmake版本要求...通过可以使用 add_custom_command / add_custom_target 命令来添加自定义操作。...POST_BUILD:链接成目标文件之后生成器表达式在 cmake 中,除了常规的命令行,如if(xxx),还支持一种特殊语法 生成器表达式,生成器表达式与常规命令不同,常规命令在 配置 阶段生效,而生成器表达式在

    87050

    CMAKE使用手记

    ---- 变量 在撰写 CMakeLists 时可以使用变量储存资料以及作为指令的参数。 CMake 中的变量具有以下特征: 1、变量严格区分大小写!...2、CMake 中的变量只有两种类型:字符串,和字符串数组。 3、变量无需声明即可赋值或者使用。未赋值的变量默认为一个空字符串。 4、与其他语言编程语言不同的是,CMake 脚本的语法中没有赋值操作。...无论是赋值,还是比较、判断操作,都是通过内置指令来完成的。 5、变量可以认为都是全局的,哪怕在一个宏中定义的变量,也可以在宏的外面被访问到。 如果字符串中不包含空格,那么可以不加引号,直接使用。...如果在命令中,使用包含了字符串数组的变量作为参数会是怎样的情况呢?...depend-target1 depend-target2 …) 这里的目标必须是 add_executable、add_library、add_custom_target 命令创建的目标 ----

    53720

    CMake编写总结

    CMake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C 的 projects/workspaces),然后再依一般的建构方式使用...这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是 CMake 和 SCons 等其他类似系统的区别之处。...虽然名字中含有“make”,但是CMake和Unix上常见的“make”系统是分开的,而且更为高阶。...GLOB_RECURSE,因为他会遍历所有找到的文件夹以及他的子文件夹,容易造成把build目录扫描导致main函数重复定义的情况 完成后用CMake编译生成makefile,即可使用make命令进行项目的编译了...所以,为了不污染项目环境,推荐使用以下命令来生成Makefile mkdir build cd build cmake ..

    1.1K10

    FLTK基于cmake编译以及使用(Windows、macOS以及Linux)

    ,cmake中"外部构建"方式) # 执行该命令前,请先阅读下面的cmake前置条件 cmake .. # Windows下建议使用PowerShell,上述的命令基本没有差别。...cmake配置前置条件 Windows 无 macOS 无 Linux 在Linux下,使用cmake进行项目生成前,务必确保一些基础库的安装: # 安装gcc/g++等核心开发构建工具和库(必备) sudo...在上面的cmake ..命令执行后,你也会看到控制台输出的一些关键内容: # cmake .....调用对应平台工具链完成FLTK编译 cmake进行项目构建完成后,在我们当前的build目录中,对于macOS/Linux类操作系统,CMake会为我们生成了对应的makefile文件,所以我们直接使用...# 在build目录下,默认就是release版 make 在Windows操作系统,请直接使用vs打开build中的解决方案FLTK.sln,打开后对项目ALL_BUILD进行Release模式编译。

    96230

    【转】从零开始手敲次世代游戏引擎(二)

    然而,Visual Studio只能在Windows上面使用。而且Visual Studio对C/C++进行了很多非标准的扩展。...因为Windows并不是一个POSIX (POSIX - Wikipedia)系统,也就是说是一个非常不“标准”的系统。基于这样的系统的API写出来的程序基本只能跑在这个系统上。...然而,这些同样是只有Visual Studio才能使用的文件格式。在Linux等平台上一般是使用make,或者GNU版的make:gmake。...CMake在这里下载。 CMake ? 安装的时候,同样需要注意,因为我们工作在命令行,需要让安装程序设置环境参数,如上图。否则在命令行会找不到cmake。 接下来是Python。...(命令行窗口会一直保持启动的时候的环境变量,所以改了环境变量之后需要重启命令行才能反映出我们的修改) 输入svn help,看到类似下面的输出,说明subversion安装OK了: C:\Users\Tim.AzureAD

    1.5K20

    分享一个适合【团队】开发的cmake【跨平台】工程模板

    这篇文章提供了一个简洁易懂的 cmake 工程模板,可以满足一个小团队的合作开发,无论是在代码安全性,还是开发效率上,都能满足基本的开发需求。...本文详细描述了文件结构和操作流程,如何在Linux系统使用命令行来编译,如何在Windows系统中使用VSCode 和Visual Studio 2019来进行开发和编译。...,并且区分了 linux 和 windows 系统,在不同的系统上编译,会自动编译对应目录下的 C 文件; include:存放头文件; myapp目录内部结构与mymath几乎是一样的,这里就不赘述了...使用VS2019打开解决方案文件: 在工程mymath上单击右键,选择【重新生成】,在输出信息区可以看到生成了文件: demo_cmake\install\library\windows\debug\...mymath.lib demo_cmake\install\bin\windows\debug\mymath.dll 编译可执行程序 在工程myapp上单击右键,选择【重新生成】。

    2.2K10

    Android NDK开发扫盲及最新CMake的编译使用

    比如指定使用c++11还是c++14编译,会引用哪些共享库,并描述关系等,还会指定编译的 abi。只有有了这些 NDK 中的编译工具才能准确的编译 c/c++ 代码。...Unix 下会使用 makefile 文件编译,Windows 下会使用 project 文件编译。...不同的CPU 与指令集的每种组合都有定义的 ABI (应用程序二进制接口),一段程序只有遵循这个接口规范才能在该 CPU 上运行,所以同样的程序代码为了兼容多个不同的CPU,需要为不同的 ABI 构建不同的库文件...这个命令中设置了 gmath 的 ARCHIVE_OUTPUT_DIRECTORY 属性。也就是改变了输出路径。 add_custom_command 命令是自定义命令。...总结以下3点 编译静态库/动态库 修改输出路径 复制暴露的头文件 接着,我们看下 app 模块是如何使用预建好的静态库/动态库的。

    2.4K30
    领券