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

g++,CMake和Makefile了解一下

隐晦规则: make的自动推导功能所执行的规则 3. 变量的定义: Makefile中定义的变量,一般是字符串 4....下面我带大家学习下CMake的基础知识。 3.1 安装CMake 首先我们看看如何在自己的linux系统(我的系统Ubuntu18.04)下安装CMake。...3.2 CMake编译流程 成功安装好CMake后我们再来说说如何在linux平台下使用CMake生成Makefile并编译的流程,如下: 1.编写CMake配置文件CMakeLists.txt,我们可以认为...3.3.2 编写CMakeLists.txt 现在我们编写CMakeLists.txt文件,该文件实际上放在哪里都可以,只要编写的路径能够正确指向就好了,CMakeLists.txt文件内容如下所示:...对于我们这个实例,编译如下: 首先我们在命令行输入cmake .(注意cmake和.之间有空格),表明Cmakelist.txt文件在当前目录下。 ? 接下来在命令行输入make ?

1.7K20

云课五分钟-03第一个开源游戏复现-贪吃蛇

进入源代码目录,查找是否有编译脚本(如Makefile或CMakeLists.txt)。如果有,您可以使用相应的构建工具(如make或cmake)进行编译。...变量中,以便CMake能够找到SDL2相关的模块。...这个CMakeLists.txt文件整体上用于配置一个使用SDL2库和相关库的游戏项目的构建。它设置了项目的基本信息、源代码文件的组织、头文件和库的路径,以及最终的输出目录。...从你给出的文本中,我看到你提供了关于“DungeonRush”游戏的更多详细信息,包括如何在openSUSE和MacOS上安装依赖项,以及如何编译该游戏。...这些信息详细地介绍了游戏的特点和玩法,以及如何在不同的操作系统上安装游戏所需的依赖库,并提供了游戏的编译指南。

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

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

    这可以通过设置CMAKE_GENERATOR环境变量或直接在命令行上指定生成器来覆盖,如下所示: cmake -G 一些生成器(如 Visual...另外,这些生成器还有相应的环境变量,这些环境变量会覆盖默认值:CMAKE_GENERATOR_TOOLSET和CMAKE_GENERATOR_PLATFORM。...要列出所有可用的预设,执行以下操作: cmake --list-presets 你可以按照如下方式使用其中一个预设: cmake --preset= 这些值覆盖了系统默认值和环境。...然而,同时,它们也可以被命令行上明确传递的任何参数覆盖: [外链图片转存中…(img-DV4rlnY3-1716544491728)] 图 1.3 – 预设如何覆盖 CMakeCache.txt 和系统环境变量...我将在如何在 CMake 中正确使用变量作用域部分解释这一点,但首先,让我们介绍一下其他类别的变量,以便我们清楚地了解它们是什么。 注意 请记住,您可以在--标记之后通过命令行向脚本传递参数。

    1.3K01

    程序员C语言快速上手——工程篇(十三)

    但是要注意,我们如果在Windows上执行以上简化版的make,则会报错,这是因为在Linux系统中,cc命令会默认的链接到gcc命令上,执行cc命令就是在执行gcc命令,而我们Windows系统中是没有...CMake工具 它首先允许开发者编写一种平台无关的 CMakeLists.txt 文件来定制整个编译流程,然后再根据目标用户的平台进一步生成所需的本地化 Makefile 或工程文件,如Linux 下的...安装 进入cmake官网下载页[1] 下载zip包或安装器,安装后,将cmake的bin目录加入PATH环境变量中,命令行输入cmake --version检查环境是否配置成功 简单示例 以上面的代码为例...命令 CMakeLists.txt文件基本上就是由命令和参数组成的,例如之前的set、message这些,下面就了解一下常用的命令 add_executable使用给定的源文件,生成一个可执行程序 add_library...SHARED add.c sub.c mul.c div.c),此外,还可以通过设置变量BUILD_SHARED_LIBS来修改默认行为,当该变量为真时,默认会生成动态库,如 # 使用option命令定义选项

    3.1K30

    解决问题Unknown CMake command add_compile_definitions

    CMake使用CMakeLists.txt文件描述项目的构建规则,并根据规则生成相应的构建文件(如Makefile或Visual Studio项目文件)。...安装新版本的CMake,并确保更新了系统的PATH环境变量,使得可执行文件路径正确配置。...请确保与实际项目相对应的文件和库的正确性,并根据实际需求修改示例代码。希望这个示例能帮助你理解如何在CMakeLists.txt中使用add_compile_definitions命令。...是预处理宏的名称,可以添加多个宏。 在使用这个命令时,CMake 会根据当前构建配置在编译器的命令行中添加预处理宏定义。...可以根据不同的构建配置添加不同的预处理宏。可以使用 cmake 命令的 -D 选项来在命令行上直接指定预处理宏,例如 cmake -DDEBUG。

    3K10

    CMake 秘籍(七)

    如何操作 首先,让我们讨论根目录中的CMakeLists.txt文件: 如您所熟悉,我们声明一个 C++11 项目,如下所示: cmake_minimum_required(VERSION 3.5 FATAL_ERROR...我们将演示如何直接使用 Visual Studio 15 2017 构建 CMake 项目,而不使用命令行。我们还将讨论如何在 Linux 或 macOS 系统上跨编译 Windows 可执行文件。...在 Windows 计算机上,我们可以观察到以下输出: Hello from Windows 如您所见,该二进制文件在 Windows 上运行!...准备工作 我们将从重用第 1 个食谱,即“创建一个简单的单元测试”,来自第四章,“创建和运行测试”的示例源代码开始,该示例对作为命令行参数给出的整数求和。...我们将在src/CMakeLists.txt中扩展,添加一个选项以添加代码覆盖率的编译标志。

    20300

    成为Oceanbase贡献者(2):源码解读build.sh debug --make 的执行过程

    工具开源软件开发:许多开源项目如 TensorFlow、Boost 等都使用 CMake 进行跨平台构建CMake 与CMakeLists.txt关系?...创建 CMakeLists.txt 文件接下来,在同一目录下创建一个名为 CMakeLists.txt 的文件,并添加以下内容:# 设置最低版本的CMake(可选)cmake_minimum_required...使用 CMake 构建项目完成上述两步后,你就可以使用 CMake 来构建你的项目了。以下是构建步骤:打开命令行界面,导航到包含 CMakeLists.txt 和 main.cpp 文件的目录。...cmake # 获取第一个参数作为构建类型debug,并将其赋值给 TYPE 变量,然后移除该参数 //....编译器区别:在 macOS 上,默认的 C 和 C++ 编译器通常是基于 LLVM 的 Clang 编译器,而非 GCC(GNU Compiler Collection)gcc:/usr/bin/gcc

    4700

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

    搜索将从存储在CMAKE_MODULE_PATH变量中的路径开始(默认情况下这个变量是空的)。当项目想要添加和使用外部查找模块时,这个变量可以被项目配置。...现在你已准备好在你的项目中使用常规库;然而,我们还应该覆盖另一种类型的依赖——测试框架。每个认真的项目都需要 Correctness testing,而 CMake 是一个很好的工具来自动化这一过程。...生成测试覆盖报告 向如此小的解决方案中添加测试并不是非常具有挑战性。真正的困难来自于稍微高级一些和更长的程序。...除非你决定覆盖这个变量,否则你的调试构建应该是未优化的。这是为了防止任何内联和其他类型的隐式代码简化。否则,将很难追踪哪一行机器指令来自哪一行源代码。...} ) endfunction() 在前面的片段中,我们首先检测lcov和genhtml(来自 LCOV 包的两个命令行工具)的路径。

    67200

    CMake 使用学习

    CMake 命令 CMake 运行主要分为两个阶段: 配置阶段:解析 CMakeLists.txt 文件 生成阶段:生成构建环境 有关 cmake 的详细参数参见 cmake --help,本文仅对其中较难理解的选项加以描述...其作用是: 如果 DBUILD_SHARED_LIBS 设定为 ON,则 CMakeLists.txt 中所有的 add_library() 创建的库都默认为共享库而不是静态库,除非 add_library...CMakeLists.txt 编写 3.1 设定编译器 在运行 CMake 前首先需要指定 CC、CXX 编译器,否则 CMake 将使用系统默认的 CC、CXX 编译器。...设定缓存变量 set(MY_CACHE_VARIABLE "VALUE" CACHE STRING "Description") # 不会覆盖已存在的变量 set(MY_CACHE_VARIABLE..."VALUE" CACHE STRING "Description" FORCE) # 会覆盖已存在的变量 修改命令行参数变量 option(MY_OPTION "This is settable from

    2.5K30

    CMake学习笔记(二)——CMake语法

    CMake学习笔记(二)——CMake语法 上一篇学习笔记,笔者简单浏览了CMake官网提供的教程,但感觉并不系统,而且对很多指令并没有进行解释,所以只写了一半就放弃了……而且笔者英语也不好,索性还是直接在国内网站上找别人的总结...) 指令不会对该变量有影响,但改变了最终目标文件的存储路径; CMAKE_CURRENT_LIST_FILE:输出调用该变量的CMakeLists.txt的完整路径; CMAKE_CURRENT_LIST_LINE...系统信息预定义变量 CMAKE_MAJOR_VERSION cmake主版本号,如2.8.6中的2 CMAKE_MINOR_VERSION cmake次版本号,如2.8.6中的8 CMAKE_PATCH_VERSION...如果cmake参数和CMakeLists.txt文件中都不指定该值的话,则该值为默认的/usr/local。 4....影响目标输出文件的属性PROPERTIES详述如下: (1) PREFIX, SUFFIX PREFIX覆盖了默认的目标名前缀(如lib); SUFFIX覆盖了默认的目标名后缀(如.so)。

    5.7K100

    解决CMAKE_CURRENT_SOURCE_DIR

    解决办法为了解决这个问题,我们可以使用 ​​CMAKE_CURRENT_LIST_DIR​​ 变量来获取当前 ​​CMakeLists.txt​​ 文件所在的目录路径。...示例代码下面是一个示例的 ​​CMakeLists.txt​​ 文件,演示了如何使用 ​​CMAKE_CURRENT_LIST_DIR​​ 变量来解决 ​​CMAKE_CURRENT_SOURCE_DIR​​...集成能力:CMake支持与其他构建工具(如Make、Ninja等)和集成开发环境(如Visual Studio、Xcode等)的集成。...编写CMakeLists.txt文件:在CMakeLists.txt文件中,使用CMake提供的语法和命令来描述项目的构建过程,例如定义变量、设置编译选项、添加源文件、链接库等。...运行CMake:使用CMake命令行工具或者图形界面工具,指定CMakeLists.txt文件的路径,然后运行CMake。CMake会解析CMakeLists.txt文件,并生成相应的构建脚本。

    47330

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

    这个文件将设置所需的最小 CMake 版本和相应的策略,设置项目名称,支持的语言,全局变量,并包括来自cmake目录的文件,以便它们的内容在全局范围内可用。...实际上,我们可以使用生成的构建系统来创建许多类型的输出:更多的源文件、头文件、对象文件、归档文件和配置文件——任何真正需要的。我们需要的只是一个命令行工具(如编译器)、可选的输入文件和一个输出路径。...其中一个构建系统目标是ALL,CMake 默认生成的包含所有顶层列表文件目标的构建系统,如可执行文件和库(不一定是自定义目标)。...CMake 的文档建议不要默认启用公共项目的统一构建。建议您的应用程序的最终用户能够通过提供DCMAKE_UNITY_BUILD命令行参数来决定他们是否需要巨构构建。...要么更改 CMake 提供的默认设置(从CMAKE_CXX_FLAGS_RELEASE中移除NDEBUG),要么通过在包含头文件前取消定义宏来实现硬编码覆盖: #undef NDEBUG #include

    70900

    CmakeList的编写和参数详解

    cmake 根据内置的规则和语法来自动生成相关的makefile 文件进行编译,同时还支持静态库和动态库的构建,我把工作中用到的东东总结在此,方便忘记时随时查看,具体cmake的介绍和详细语法还是参考官方文档...表示要编译的源文件,所有的源文件都要罗列到此处。set 设置变量,变量名SOURCE_FILES自定义。 2....INCLUDE_DIRECTORY(…) include头文件时搜索的所有目录 变量PROJECT_SOURCE_DIR 表示工程所在的路径,系统默认的变量 3....但使用第三方的库却要指定成具体的库名,如:libACE-6.0.0.so 这一点很诡异,暂时还没找到原因。...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    2.2K50

    CMake简易指南

    -G XXX来指定翻译的目标编译系统,在未指定目标编译时 cmake 会默认指定一个Generator,如下表:默认编译系统 LinuxUnix Makefiles(Makefile...文件中已编写安装规则,通常需要指定安装那些文件,以及这些文件相对于CMAKE_PREFIX_PATH的位置如已指定-G Ninja,则无需使用-j,Ninja默认启用多线程编译常用语法以下为最基础的样例...、缓存变量和环境变量,普通变量直接设置尽在当前 CMakeLists.txt 及子项目(通过 add_subdirectory 添加的项目)中生效,可取消设置,缓存变量则会写到 CMakeCache.txt...,如:Target.include_directories不带target_开头的命令表示当前 CMakeLists.txt极其子CMakeLists.txt 全局生效,如:global_include_directories...中,除了常规的命令行,如if(xxx),还支持一种特殊语法 生成器表达式,生成器表达式与常规命令不同,常规命令在 配置 阶段生效,而生成器表达式在 编译 阶段才针对生成器进行计算评估。

    87350

    CMake 秘籍(四)

    由于 Git 命令可能会失败(源代码可能已经在 Git 仓库之外分发)或者系统上甚至可能没有安装 Git,我们希望为变量设置一个默认值,如下所示: set(GIT_HASH "unknown") 这个食谱的一个问题是...,并且不能直接查询ARGN,因为它在通常的 CMake 意义上不是一个变量。...如果可以使用函数实现某个功能,那么这可能比宏更可取,因为它提供了对父作用域状态的更多默认控制。...message(DEPRECATION "variable ${_variable} is deprecated") endif() endfunction() 接下来,该函数将附加到即将被弃用的变量上...如第 7 个配方,使用add_subdirectory限制范围所述,这种方法可以扩展到大型项目,无需在目录之间携带源文件列表的全局变量,并且具有隔离作用域和命名空间的额外好处。

    25120

    CMake 秘籍(六)

    CMake 将为该变量设置一个合理的默认值:在 Unix 上是/usr/local,在 Windows 上是C:\Program Files。...这些将大致遵循相同的布局,但我们定义了新的INSTALL_LIBDIR、INSTALL_BINDIR、INSTALL_INCLUDEDIR和INSTALL_CMAKEDIR变量,用户可以覆盖这些变量,如果他们愿意的话...CMAKE_INSTALL_INCLUDEDIR:最后,我们使用这个变量来获取我们的 C 头文件的正确子目录。这个变量扩展为include。 然而,用户可能想要覆盖这些选择。...在 Windows 上,这是默认行为。实际上,回想一下,在前一个配方中,我们需要通过将WINDOWS_EXPORT_ALL_SYMBOLS属性设置为ON来覆盖它。 我们如何标记我们希望可见的符号?...,我们可以通过设置CMAKE_GENERATOR环境变量来更改默认的生成器。

    40800

    Linux下CMake简明教程

    set,是用于定义变量的,EXECUTABLE_OUT_PATH和PROJECT_SOURCE_DIR是CMake自带的预定义变量,其意义如下, EXECUTABLE_OUTPUT_PATH :目标二进制可执行文件的存放位置...(cmake有很多预定义变量,详细的可以网上搜索一下) 添加好以上这2个CMakeLists.txt后,整体文件结构如下, 下面来运行cmake,不过这次先让我们切到build目录下,然后输入以下命令...设置最终生成的库的名称,还有其它功能,如设置库的版本号等等 LIBRARY_OUTPUT_PATH: 库文件的默认输出路径,这里设置为工程目录下的lib目录 好了,让我们进入build目录下运行cmake...每次想改变MYDEBUG时都需要去修改CMakeLists.txt,有点麻烦,其实可以通过cmake的命令行去操作,例如我们想把MYDEBUG设置为OFF,先cd到build目录,然后输入cmake ....,那么这次虽然没设置A,也会默认使用A上次的option值。

    1.9K10
    领券