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

如何让cmake在设置Dir后提升一个级别

在使用CMake时,可以通过设置DIR属性来指定生成的目标文件的输出目录。如果想要让cmake在设置DIR后提升一个级别,可以使用以下方法:

  1. 在CMakeLists.txt文件中找到设置输出目录的位置。一般来说,这个位置会包含类似于set(DIR ${CMAKE_BINARY_DIR}/output)的代码,其中DIR是一个自定义的变量,用于保存输出目录的路径。
  2. 在设置输出目录的代码之后,添加以下代码来将输出目录提升一个级别:
  3. 在设置输出目录的代码之后,添加以下代码来将输出目录提升一个级别:
  4. 这段代码使用get_filename_component函数获取DIR的父级目录,然后将其赋值给CMAKE_BINARY_DIR变量,以实现目录提升。
  5. 注意:以上代码中的CMAKE_BINARY_DIR是CMake内置的变量,用于保存生成的目标文件的输出目录。
  6. 接下来,你可以继续编写其他的CMake配置代码,例如添加源文件、设置依赖项等。

通过上述步骤,你可以成功实现让cmake在设置DIR后提升一个级别的操作。

请注意,上述答案提供了一个常见的解决方案,但具体实施可能因项目结构和需求而有所不同。如果你需要更加详细和准确的指导,请提供更多上下文信息,以便我能够给出更加具体的答案。

相关搜索:如何用javascript让一个div在X秒后出现?Flutter:如何让一个小部件在几秒钟后消失?在componentWillMount ()函数运行后,如何从应用程序级别状态传递一个属性?JAVASCRIPT如何让API在使用命令后发出一个数字扑腾,如何让一个容器在一段时间后消失?如何让一个img在页面加载后出现,并在一段时间后消失?如何让Javascript函数在另一个函数完成后触发?如何让下拉按钮的弹出按钮在选择一个项目后自动关闭?如何让一个区块在3秒后出现在页面上?CSS如何让bot在reaction | Discord.js后发送消息到另一个通道如何使用Scanner类让.next()在最后打印的语句后获取下一个单词?在字符串中创建一个项目列表后,如何让所选项目打开一个弹出图像在我调用了一个扩展方法后,我如何让resharper知道我的变量不是空的?有没有一个onclick功能,可以让我知道在sql服务器中搜索图像后如何显示它?Flutter :在Swiper中完成特定逻辑后如何显示下一个索引,其中GridView也在Swiper中设置?如何让按钮在第一次单击时消失,等待,然后在几秒钟后出现在另一个位置?Android Studios:我如何编写一个代码,让我的应用程序在一定的点击次数后执行特定的操作?如何从std::async线程中启动std::async线程,并让第一个线程在第二个线程启动后消亡?如何在Visual Studio中设置让C++/C代码只在一个线程中运行来测试运行时间?如何让python脚本(X)重新加载另一个模块(Y)中动态变化的变量,然后在相同的脚本(X)中重新导入更新后的模块(Y)?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

CMake---优雅的构建CC++软件项目实践(1)

首先说明的是本篇文章不从cmake的整个语法上去讲述,而是从一个实际项目的构建上入手,去了解如何优雅的去构建一个软件项目,搭建一个C/C++软件项目基本的依赖组件,最后形成一个构建C/C++软件项目的模板...如何去构建动静态库和找到这些库? 如何去实现支持多平台的项目构建? 如何去构建一个应用? 如何实现项目的最后install? 如何很友好的去展示构建过程的各种级别信息?...如何适配cmake-gui,采用友好的ccmake或者cmake-gui实现构建?...cmake文件中我们只需要加如下设置即可: IF(NOT CMAKE_BUILD_TYPE) SET(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Choose...Release or Debug" FORCE) ENDIF() MESSAGE(STATUS "Build type: " ${CMAKE_BUILD_TYPE}) 执行cmake命令的时候可以设置

8.4K52

代码的“真面目”---如何查看cpp预处理程序代码

cpp中预处理必不可少,如何查看预处理的程序代码呢?单文件?CMake+makefile?CMake+ninja?ndk-build? XCode? 答案都在这里。...但使用宏定义,宏预处理阶段才展开,会造成代码阅读的不便;尤其是宏嵌套,会极大加深代码阅读和了解难度。 [恐怖的宏定义] 用宏封装,使用起来会非常方便。但是第一次阅读时,会比较难以理解。...如果能阅读宏展开的代码,会轻松方便很多。 所以本文目的就是如何方便快捷的获得宏展开的代码?...CMakeFiles/cppConcurrencyDemo.dir/main.cpp.i 进入命令行,和makefile同级别目录,然后执行“make main.cpp.i”,就会生成对应的preprocess...但是查询资料发现,ninja为了提升构建速度,既没有默认生成这些中间文件,也没有生成这些中间文件的任务。同时gcc/clang最新的构建流程中,也不会生成这些中间文件。

5.8K41
  • CMAKE入门实战

    0.导语 最近做的项目使用CLION构建,而这个采用CMakeLists.txt管理,因此为了更好的学习,故找到了一篇大牛级别的入门文章,有文章有代码,本文是花了一点时间把这篇文章学习的重要点记录吧,...CMake 会将当前目录所有源文件的文件名赋值给变量 DIR_SRCS ,再指示变量 DIR_SRCS 中的源文件需要编译成一个名称为 Demo 的可执行文件。...本节CMake与2不同如下三块: (1)加入一个配置头文件,用于处理 CMake 对源码的设置 # 加入一个配置头文件,用于处理 CMake 对源码的设置 configure_file ( "${PROJECT_SOURCE_DIR...4.2 测试 CMake 提供了一个称为 CTest 的测试工具。我们要做的只是项目根目录的 CMakeLists 文件中调用一系列的 add_test 命令。...5.支持gdb CMake 支持 gdb 的设置也很容易,只需要指定 Debug 模式下开启 -g 选项: set(CMAKE_BUILD_TYPE "Debug") set(CMAKE_CXX_FLAGS_DEBUG

    1.5K20

    【Android NDK 开发】Android Studio 使用 CMake 导入动态库 ( 构建脚本路径配置 | 指定动态库查找路径 | 链接动态库 )

    CMake 引入动态库 : 使用 set() , 指定一个 CMAKE_CXX_FLAGS 编译器参数 , 在编译器参数添加 -L 参数指定动态库查找目录 ; # 设置变量 # CMAKE_CXX_FLAGS... Module 级别的 build.gradle 脚本中配置 CMake 编译选项 ; // I ....C 参数传给编译器 # 参数设置 : 传递 CMAKE_CXX_FLAGS C+= 参数给编译器时 , 该参数后面指定库的路径 # CMAKE_SOURCE_DIR 指的是当前的文件地址 #...表示 C 编译器参数 ; ② 参数追加 : set 语句 , CMAKE_CXX_FLAGS 编译器参数 , 追加了 “-L{CMAKE_SOURCE_DIR}/…/jniLibs/{ANDROID_ABI...C+= 参数给编译器时 , 该参数后面指定库的路径 # CMAKE_SOURCE_DIR 指的是当前的文件地址 # -L 参数指定动态库的查找路径 set(CMAKE_CXX_FLAGS

    9.2K20

    【Android NDK 开发】Android Studio 使用 CMake 导入静态库 ( CMake 简介 | 构建脚本路径配置 | 引入静态库 | 指定静态库路径 | 链接动态库 )

    Module 级别的 build.gradle 脚本中配置 CMake 编译选项 ; // I ....构建脚本 CMakeList.txt 路径 : Module 级别的 build.gradle 脚本中配置 Android.mk 构建脚本的路径 ; // III ....特别注意 : 使用这种方法引入动态库 , 6.0 以上的系统是无法使用的 , 推荐使用 set() 设置 -L 参数的方式引入动态库 ; # 设置变量 # CMAKE_CXX_FLAGS 表示会将...C++ 的参数传给编译器 # CMAKE_C_FLAGS 表示会将 C 参数传给编译器 # 参数设置 : 传递 CMAKE_CXX_FLAGS C+= 参数给编译器时 , 该参数后面指定库的路径...参数给编译器时 , 该参数后面指定库的路径 # CMAKE_SOURCE_DIR 指的是当前的文件地址 # -L 参数指定动态库的查找路径 #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS

    2.8K40

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

    如果有,您可以使用相应的构建工具(如make或cmake)进行编译。执行编译命令,将生成可执行文件或游戏二进制文件。 运行游戏:当编译完成,您将得到一个可执行的游戏二进制文件。...set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) 这里设置了运行时输出目录,即生成的可执行文件将放置构建目录下的bin文件夹中...每个级别都有一个英雄队列的目标长度,一旦达到,玩家将被送到下一个级别并重新开始。根据玩家所处的级别,许多因素(例如生命值和伤害、增益和减益的持续时间、怪物的数量和强度等)都会进行调整。...对于其他操作系统,你建议用户参考SDL教程来设置环境,这也是一个很好的通用建议。 编译:你提供了一个简单的编译流程,首先使用cmake配置构建目录,然后进行构建。这为用户提供了一个清晰的构建指南。...make 这将创建一个名为“build”的目录,并在其中编译游戏。 4. 运行游戏: 编译完成,你可以“build”目录中找到可执行文件。终端中执行以下命令来运行游戏: .

    32730

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

    CMake本身是一个工具集,由五个可执行的程序组成:cmake、ctest、cpack、cmake-gui和ccmake,其中cmake可以说是出镜率最高的明星级别程序了,它用于构建项目的第一步,进行项目的配置...图2:CMake配置、生成和构建阶段的示意图 2、基本的CMake语法 2.1 变量 普通变量、缓存变量、环境变量 普通变量、缓存变量和环境变量这三类变量组成了CMake变量这一个“复杂”的主题,人头疼的一点在于上述三个变量不同的作用域中的...2.2 控制结构 三类控制结构:条件块、循环、定义指令 没有控制结构,CMake 语言就不完整 CMake中的控制结构就是提供一个结构,用户可以针对具体的情况来设置触发条件 表达式来控制需要执行的命令语言...所以宏中调用return() 将比函数中返回调用语句的级别高一级(若已经顶层作用域中,可能会终止执行)。...3.7 编译器选项设置 前面的示例展示了如何探测CMake,从而获得关于编译器的信息,以及如何切换项目中的编译器。一个任务是控制项目的编译器标志。

    6K31

    使用gRPC基于Protobuf传输大文件或数据流

    使用gRPC基于Protobuf传输大文件或数据流 现代软件开发中,性能通常是关键的考虑因素之一,尤其是进行大文件传输时。高效的协议和工具可以显著提升传输速度和可靠性。...sudo apt install -y cmake 2.1.2 设置环境变量 export MY_INSTALL_DIR=$HOME/.local mkdir -p $MY_INSTALL_DIR export... gRPC 项目中,示例代码中的common.cmake 包括以下内容: 变量设置:定义项目中使用的常见路径和变量,例如 gRPC 和 protobuf 的安装路径,以便在整个项目中重用。...编译器选项:统一设置编译器标志,例如 C++ 版本标准、优化级别、警告处理等。...测试结果显示,使用gRPC和Protobuf传输大文件多个方面均优于传统TCP方法: 传输速度: gRPC利用HTTP/2的多路复用功能,可以一个连接中并行传输多个文件,显著提升了传输效率。

    1.4K00

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

    生成阶段 阅读项目配置CMake 将为它正在工作的确切环境生成一个构建系统。...然而,项目中它们并非必需,只有完成初始设置它们才变得有用。...这是因为嵌套作用域结束,复制的VAR变量被丢弃。 CMake 中作用域的概念如何工作有着有趣的暗示,这在其他语言中并不常见。...如果你一个嵌套作用域中执行时取消设置(unset())了父作用域中创建的变量,它将消失,但仅在嵌套作用域中。当嵌套作用域完成,变量会恢复到其原来的值。...这意味着将根据当前日志级别(默认是STATUS)打印消息。我们在上一章的调试和跟踪选项部分讨论了如何更改此设置

    1.2K01

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

    CMake 支持基于每个目标单独设置标准,这意味着你可以拥有任何粒度。我相信最好整个项目统一到一个标准上。...通过使用-O选择优化级别,我们间接设置了一系列标志,每个标志控制一个特定的优化行为。...,因为内联是汇编语言或机器代码级别(而不是源代码级别)发生的,但它传达了一个大致的画面。...这对于解决我们将来可能会遇到的更高级别案例中的所有问题非常有用。 然后,我们探讨了如何 CMake 验证宿主上可用的编译器是否满足我们代码构建的所有必要要求。...这对于解决我们将来可能会遇到的更高级别案例中的所有问题非常有用。 然后,我们探讨了如何 CMake 验证宿主上可用的编译器是否满足我们代码构建的所有必要要求。

    56500

    万字总结编译利器CMake,从入门到项目实战演练

    这样就带来了一个严峻的问题:如果软件想跨平台,必须要保证能够不同平台编译。而如果使用上面的 Make 工具,就得为每一种标准写一次 Makefile ,这将是一件人抓狂的工作。...此设置将存储缓存中,因此用户不必每次构建目录上运行CMake设置该值。 下一个更改是使构建和链接MathFunctions库成为布尔选项。...让我们从构造一个INTERFACE目标并指定所需的C++标准级别11开始,而不是使用CMAKE_CXX_STANDARD。...导入一个CMake项目(消费者) 本示例说明项目如何查找生成Config.cmake文件的其他CMake软件包。 它还显示了在生成Config.cmake如何声明项目的外部依赖关系。...支持 gdb CMake 支持 gdb 的设置也很容易,只需要指定 Debug 模式下开启 -g 选项: 设置CMAKE_BUILD_TYPE“调试”) 设置CMAKE_CXX_FLAGS_DEBUG

    1.2K00

    CMake 秘籍(三)

    本章中,我们将演示如何将测试集成到 CMake 构建结构中,使用流行的测试库和框架,并牢记以下目标: 用户、开发者和持续集成服务轻松运行测试套件。...本例的动机是展示如何使用测试夹具。对于需要测试前设置动作和测试清理动作的更复杂的测试来说,这些夹具非常有用(例如创建示例数据库、设置连接、断开连接、清理测试数据库等)。...这些设置和清理步骤可以委托给测试框架,如 Google Test 或 Catch2,但在这里,我们展示了如何CMake 级别实现测试夹具。...我们将通过一个示例来演示这一点,该示例中,我们目标构建之前打印其链接行,然后在编译的可执行文件之后测量其静态大小分配。...本教程中,我们将设置一个项目以使用激活的不同消毒器编译代码,并展示如何检查正确的编译器标志是否可用。

    58920

    Linux下CMake简明教程

    本文主要讲述Linux下如何使用CMake来编译我们的程序。...---- 一 安装CMake 本文使用ubuntu18.04,安装cmake使用如下命令, sudo apt install cmake 安装完成终端下输入cmake -version查看cmake...但是如果有一百个源文件,再这样做就有点坑了,无法体现cmake的优越性,cmake提供了一个命令可以把指定目录下所有的源文件存储一个变量中,这个命令就是 aux_source_directory(dir...第一个参数dir是指定目录,第二个参数var是用于存放源文件列表的变量。 我们main.c所在目录下再添加2个文件,testFunc1.c和testFunc1.h。...---- 六 动态库和静态库的编译控制 有时只需要编译出动态库和静态库,然后等着其它程序去使用。让我们看下这种情况该如何使用cmake

    1.9K10

    CMake 秘籍(七)

    如何操作 与之前的食谱相比,我们将修改根CMakeLists.txt文件,并实现一个函数(add_sphinx_doc): cmake文件夹附加到CMAKE_MODULE_PATH之后,我们如下包含...该函数自定义模块中定义,并接受关键字参数来设置结合 Doxygen 和 Sphinx 的构建: add_breathe_doc( SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR...为此,我们可以选择 CMake | 更改 CMake 设置,然后我们到达以下屏幕: 左上角的面板中,我们现在可以检查和修改生成器(本例中为 Ninja)、设置、参数以及路径。...夜间模式将更新(或降级)代码到最接近最新夜间开始时间的仓库快照,这可以CTestConfig.cmake设置;它为接收频繁更新的项目中的所有夜间测试提供了一个定义良好的参考点。...,并将测试步骤的并行级别设置为可用核心数,以最小化总测试时间: include(ProcessorCount) ProcessorCount(N) if(NOT N EQUAL 0) set(CTEST_BUILD_FLAGS

    16100

    CMake 秘籍(六)

    关于库位置有两种方法: 可以通过设置环境变量链接器知道: GNU/Linux 上,这需要将路径附加到LD_LIBRARY_PATH环境变量。...它可以被编码到可执行文件中,使用RPATH设置运行时搜索路径。 一种方法更可取且更稳健。但是,设置动态共享对象的RPATH时应该选择哪个路径?... Windows 上,这是默认行为。实际上,回想一下,在前一个配方中,我们需要通过将WINDOWS_EXPORT_ALL_SYMBOLS属性设置为ON来覆盖它。 我们如何标记我们希望可见的符号?...对于message-shared,链接 UUID 库是一个PUBLIC要求,因为它将用于构建项目内的目标以及下游项目中的目标。编译定义和包含目录需要在PUBLIC 或 INTERFACE级别设置。...将编译的 Python 模块文件安装到相对于安装目标位置的account子目录中(第十章,编写安装程序,详细讨论了如何设置目标位置)。

    36800

    CMake用法,这篇文章讲全了

    CMake一个开源的、跨平台的自动化构建系统,用于管理软件构建过程。它通过编写配置文件(CMakeLists.txt),自动生成适合不同编译器和操作系统的构建脚本或项目文件。...单文件 假设工程中只有main.cpp一个文件,文件夹的布局如下: . ├── CMakeLists.txt └── main.cpp 那么该如何使用书写其CMakeLists文件呢,如下为一个简单的CMakeLists.txt...(VERSION 3.10) # 设置cmake的最低版本要求为3.10 project(MultiFolderExample) # 设置项目名称 #CMAKE_SOURCE_DIR变量代表当前...(${CMAKE_SOURCE_DIR}/third_party/include) # 添加第三方库的库文件路径 link_directories(${CMAKE_SOURCE_DIR}/third_party...无论是初学者还是经验丰富的开发者,CMake都是提升构建效率、简化跨平台开发的得力助手,仅以与诸君一同探索。

    16310

    CMake使用教程和原理

    一、什么是CMake CMake一个主要用于CPP的构建工具。CMake语言是平台无关的中间编译工具。同一个CMake编译规则在不同系统平台构建出不同的可执行构建文件。...项目的构建过程中都使用shell级别的环境变量。通常,项目具有指向根目录位置的PROJECT_ROOT环境变量。还有配置可选或外部程序包。要使构建正常进行,每次执行构建时都需要设置所有这些外部变量。...#if Foo_COMPILER_CXX_VARIADIC_TEMPLATES #else #endif 3.2 找到编译头文件 CMake找到我的头文件, include_directories(...----   # INSTALL_COMMAND    "" ) 下载完之后编译这个过程,基本不需要额外的配置,会自动编译,也许会按照个人习惯设置一个编译的 install 目录,可以通过 CMAKE_ARGS... -DCMAKE_INSTALL_PREFIX:PATH=${DMP_CLIENT_SOURCE_DIR}/third/gtest/build 设置 cmake 的参数来实现。

    12.6K296

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

    当然,我们不想每次修改都手动执行这个命令;CMake 应该在构建过程中处理这个问题。我们已经知道如何在系统中找到clang-format(我们之前需要手动安装它)。...系统上安装项目 第章 1 CMake 初学者中,我们提到 CMake 提供了一个命令行模式,可以系统上安装构建好的项目: cmake --install [] DIR变量,并使用从此处开始的路径。...为了较低级别管理这些安装步骤,我们讨论了install()命令的其他模式,包括安装文件、程序和目录以及安装过程中调用脚本。 解释了如何编码安装步骤之后,我们学习了 CMake 的可重用包。...为了较低级别管理这些安装步骤,我们讨论了install()命令的其他模式,包括安装文件、程序和目录以及安装过程中调用脚本。 解释了如何编码安装步骤之后,我们学习了 CMake 的可重用包。

    59300

    CMake 秘籍(五)

    我们的例子中,我们使用了 SOURCE_DIR 选项 CMake 知道源代码可在 ${CMAKE_CURRENT_LIST_DIR}/src 文件夹中找到,因此不应从其他地方获取。...本食谱中,我们将专注于一种用例,并演示如何使用 CMake 帮助下的 Cython 将 C/C++和 Python 接口。...{CMAKE_CURRENT_BINARY_DIR}内部创建,为了 Python test.py脚本能够找到它,我们通过自定义环境变量传递相关路径,该变量test.py内部用于设置PATH变量。...注意COMMAND是如何设置为调用 CMake 可执行文件本身以执行 Python 脚本之前正确设置本地环境的。...:account> ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/account/test.py ) 第十一章《打包项目》中,我们将讨论如何创建一个可以使用

    70620
    领券