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

cmake 生成Makefile指定cc++编译器

https://blog.csdn.net/10km/article/details/50444715 linux下在使用cmake生成Makefile的时候,如果不指定编译器,则默认是使用系统原生的编译器..., 当操作系统中安装了新的版本的编译器,多个版本编译器共存的时候,如果想使用新版本的编译器,在cmake生成Makefile的时候就需要指定编译器。...不论环境变量$PATH怎么设置,cmake在生成Makefile,如果不指定编译器,生成Makefile都会调用/usr/bin下的g++/gcc。 所以这种情况下必须指定编译器。...shell脚本 那么如果要在脚本中调用cmake生成Makefile,应该如何写脚本呢? #!.../build ## 保存当前路径位置,切换到BUILD_FOLDER pushd $BUILD_FOLDER ## 生成 Makefile, cmake "`dirs +1`" $GXX_PATH -G

7.1K10

AIoT应用创新大赛-用 CLion 获取更好的代码补全与跳转体验

换用编辑器,必须存在 makefile 才能找到头文件路径、源码路径、链接库路径,进而做代码分析以便支持代码跳转与补全。...首先安装 compiledb 工具 pip3 install compiledb 在 makefile 所在的目录下运行命令,就会在当前目录下生成 compile_commands.json compiledb...-n make 编译数据库的文件内容示意如下: 因为 makefile 默认用 arm-none-eabi-gcc 工具链,在 CLion 中暂时未找到支持方法,故可通过批量替换为 gcc的方式避免加载工程出错...Q&A 为什么不在 CLion 中直接使用 makefile CLion 确实已经支持了 makefile 工程,但不支持 MCUXpresso IDE 生成的 makfile。...使用 CLion(2021.2 版本)打开项目目录后,打开 makefile 文件,选择 load makefile,load 成功但是无法自动跳转,自动补全功能也不全。

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

Clion快速查看cpp preprocess 文件

因为Clion默认使用CMake管理文件,所以这里对Clion也适用。 注意:仅适用CMake+make,对于CMake+ninja等不适用。...对于Clion项目,编译时会生成cmake-build-debug目录,里面是cmake编译项目的产物。如下图: image.png 注意,这里最重要的是Makefile文件,里面会有一系列任务。...这里我们最关注的是“main.cpp.i”,其内容如下,作用是生成预处理preprocess文件。...同级,然后执行“make main.cpp.i”,就会生成对应的preprocess文件。...如下图: image.png 这里来看下源文件和预处理后的文件对比: 查如何生成预处理文件是因为,写modern cpp,想看下using后的会不会被预处理,“gcc -E”在大项目中不实用,所以找下有没有更智能更自动化的方法

1.8K20

披着CLion的外衣实则在讲CMake

通过 cmake 配置选项运行整个项目的 CMakeList.txt 生成 makefile 或其他底层脚本后再通过对应的工具去执行这个脚本 运行编译好的程序 而我们现在讲的就是添加 cmake 配置选项...现在 cmake 在 CLion 中的配置项已经讲完了,简单实践一下来体验之前讲的 CLion 到整个运行的流程: 通过 cmake 配置选项运行整个项目的 CMakeList.txt。...生成 makefile 或其他底层脚本后再通过对应的工具去执行这个脚本。...点击执行后,不仅会直接对应的 makefile 或 build.ninja 还会顺便把这个程序运行CLion 内置的终端环境中。 运行编译好的程序:这一步已经在第二步一并执行了。...CMake 的使用与实战 经过上述文字和图片讲解,我们很自然的想到,整个 CLion 运行 C++ 代码其实就是在运行 cmake 和 makefile(或 build.ninja),第二个过程我们参与不了

4.5K30

Cpp(三) 什么是CMake

需要先了解Cpp的流程 用编辑器(VSCode/Clion等)编写源代码,如main.cpp文件 用编译器编译代码生成目标文件,如.o 用链接器连接目标代码生成可执行文件,如Windows下的.exe和...(.cpp)过多,一个一个编译就会特别麻烦,于是就有了make工具,它是一个自动化编译工具,可以使用一条命令实现完全编译,但是开发者需要编写一个规则文件,make依据规则文件来批处理编译,这个文件就是makefile...CMake 但是对于一个特别巨大的工程来说,编写一个makefile确实是一件非常复杂的事情,于是出现了CMake,CMake负责读入所有源文件,然后自动生成makefile,但是这时,需要开发者编写一个规则文件...,CMake通过这个规则文件生成makefile,这个文件就是CMakeLists.txt 所以,一个Cpp工程,从源码到运行,可以手动编写makefile文件,然后编译,生成一个可执行文件;也可以编写...CMakeLists文件,通过CMake工具,自动生成makefile文件,然后编译生成可执行文件

93110

Linux 下用 Clion 编写及调用共享库的实践

在 Linux 上,我尝试了 JetBrains 家的 Clion ,它的代码提示,确实比 Codeblock 好,这点值得肯定。...虽然 Clion 是收费软件,但是有学生优惠。我用 edu 邮箱申请一年期的免费使用权,到期之后还可以用 edu 邮箱再次验证使用。在能力范围之内,能不用破解软件,就不用破解软件。...argv[]) { hi(); cout << endl; cout << add(12,13) << endl; return 0; } 当然了,C++ 编写的库,C 是无法直接调用的...对于如何使用 Makefile 编译动态库和静态库,可参考这篇文章:linux编译动态库和静态库的makefile示例 。...需要说明一点:cmake 也是根据 CMakeLists.txt 文件去生成 Makefile 的 (可以跨平台生成对应平台能用的 Makefile) 。

6.2K10

基于图的分割 实验教程Efficient Graph-Based Image Segmentation

进入到如图所示的bin目录下,看到那个clion.sh文件了吧 在上面的空白区域右击,在终端打开,然后执行 sh ..../clion.sh 一路同意接受就好~~就可以啦 ---- 基于图的分割代码下载以及部署到Clion中。 ?...makefile文件放到红线所示文件里,把所有.h文件和.cpp文件也放好 ?...上图是我们选择k=7000,500,50,5,1后产生的分割效果图 每张图的下面是生成分割区域的个数,直观上理解,k表示了生成区域的大小,k越大,我们生成的区域块就越大。 ?...min表示,最终分割的区域包含像素个数<min,我们需要将它与其最相似合并 直观上理解,min越小,噪声越明显 ? 最后一张min=1的局部截取,噪声较为明显

83370

实战Makefile前,该知道那些知识?

make与make clean 生成目标文件规则(make命令): 执行make命令则会根据当前目录的Makefile文件定义的规则生成对应的目标文件。...命令出错规则(-符号): 当命令运行完,make会检测每个命令的返回码,如果返回成功,那make会执行下一条命令,当规所有的命令成功返回后,make执行完成。...从例子说明,mkdir的出错并没有对其他命令产生影响,因为我只要目录存,所以mkdir出错不应该终止命令规则的运行。...为了解决上述问题,只需要在Makefile的命令行前加一个符号-,即使命令执行出错,也依然继续执行后续的命令。...add.o 由add.c生成 函数 Makefile提供了大量的函数,其中我们经常使用的函数主要有两个(wildcard,patsubst)。

45920

ubuntuwin10 CLion 使用

发现了JetBrain开发的C++编辑器CLion果断试了一下发现 其实很好用(无论是阅读代码,调试)。...CLion优势: 支持一个工程下N个main函数(前面使用VS的时候好像不行,时间长了不记得)这样运行调试的时候特别方便 IDE的风格和Pycharm以及IDEA很像看起来很舒服,而且快捷键非常好用 可以调用...git SVN工具直接创建github项目 跨平台(工作中的代码很多只能在linux下编译运行,而公司代码基本是使用makefile, 我们可以把代码下载到win10下添加几个CMakeList.txt...生成.a文件: ? ---- 下面是ubuntu环境下编写调试C++11 handy网络库源码, 编写简单的CMakeLists.txt即可以生成静态库static lib: ? ?...---- 生成可执行文件以及链接静态库: ? 调试起来也是特别方便(win10下): ? ubuntu下面: ? ---- 下面给出一个简单的示例代码结构如下: ?

1.7K20

Makefile文件编写

(任意的shell命令) make工作 默认执行 make 命令, GNU make在当前目录下依次搜索下面3个文件 "GNUmakefile", "makefile", "Makefile", 如果找到...参数 含义 --debug[=] 输出make的调试信息, options 可以是 a, b, v -j --jobs 同时运行的命令的个数, 也就是多线程执行 Makefile -r...命令前缀(@ or -) Makefile 中书写shell命令可以加2种前缀 @ 和 -, 或者不用前缀....输出执行的命令以及命令执行的结果, 出错的话停止执行 前缀 @ 只输出命令执行的结果, 出错的话停止执行 前缀 - 命令执行有错的话, 忽略错误, 继续执行 伪目标 伪目标并不是一个"目标(target...当目标是函数库文件, 表示其中的目标文件名 $< 第一个依赖目标.

1.2K30

【系列教程】 C++项目开发配置最佳实践(vscode远程开发配置、格式化、代码检查、cmake管理配置)

做下比较,clion支持的full remote development,基本原理是自动同步本地目录和远端服务器目录,在写代码,用的还是本地环境,无法识别unix特有的那些头文件。...而vscode的远程开发,是把开发者自己机器上的 VSCode 原样拷贝到作为目标机器(Remote Host)上,以服务的形式运行,而本地的 VSCode 作为客户端,两者之间通过远程通讯协议彼此协调合作...使用cmake生成makefile文件并编译一个分以下流程:在根目录及每个模块目录下编写CMakeLists.txt在根目录创建一个build文件夹进入build目录,执行cmake …/ 生成整个项目的...# 当这个变量值为 Debug 的时候,CMake 会使用变量 CMAKE_CXX_FLAGS_DEBUG 和 CMAKE_C_FLAGS_DEBUG 中的字符串作为编译选项生成 Makefile; 当变量值为...Release,则会使用CMAKE_CXX_FLAGS_RELEASE 和 CMAKE_C_FLAGS_RELEASE 中的字符串作为编译选项生成 Makefile

3K30

如何用cmake编译

CMake主要是编写CMakeLists.txt文件,然后用cmake命令将CMakeLists.txt文件转化为make所需要的makefile文件,最后用make命令编译源码生成可执行程序或共享库(...cmake后会生成很多编译的中间文件以及makefile文件,所以一般建议新建一个新的目录,专门用来编译),然后执行下列操作: cd build cmake .....在build里生成Makefile,make根据生成makefile文件,编译程序,make应当在有Makefile的目录下,根据Makefile生成可执行文件。...表示生成的共享库文件就叫做 lib工程名.so # 也可以专门写cmakelists来编译一个没有主函数的程序来生成共享库,供其它程序使用 # SHARED为生成动态库,STATIC为生成静态库 add_library...`-- cmake_install.cmake 使用make命令编译得到二进制文件 [make] 二进制文件所在目录(CMakeLists.txt文件配置) [成功生成二进制文件] 下次教大家如何用Clion

4.1K80

makefile介绍 通俗易懂

关于编译和链接 编译:生成目标文件(编译,编译器需要的是语法的正确,函数与变量的声明的正确) 链接:生成可执行文件(链接,主要是链接函数和全局变量,把目标文件链接成应用文件) Windows程序开发一般包括...我们需要写一个Makefile文件来告诉Make怎样运行所需要的杂乱无章的命令。 如果这个工程从没被编译过(没有编译后生成的目标文件),那么所有的.c源文件都要被编译并链接。...只要写好Makefile,无论怎么修改源程序,只要运行下Make命令就自动完成编译和链接,大大提高了项目运行开发的效率。...这是不小心容易出错的地方。 以下是写好的Makefile文件,他告诉Make把源程序编译链接成一个FY的目标文件。...而且如果项目大的话Makefile也会写的很混乱,不方便阅读,出错的概率也更大。因此,我们需要一个变量来代替我们写的这些文件。

82500

Makefile 使用总结

- make需要执行的命令 (任意的shell命令), Makefile中的命令必须以 [tab] 开头 显示规则 :: 说明如何生成一个或多个目标文件(包括 生成的文件, 文件的依赖文件, 生成的命令...执行生成命令 2....中涉及到大量源文件(这些源文件和Makefile极有可能不在同一个目录中), 这时, 最好将源文件的路径明确在Makefile中, 便于编译查找....命令前缀 Makefile 中书写shell命令可以加2种前缀 @ 和 -, 或者不用前缀. 3种格式的shell命令区别如下: 不用前缀 :: 输出执行的命令以及命令执行的结果, 出错的话停止执行...错误之后的命令 <-- 出错之后的命令也会执行 2.4 伪目标 伪目标并不是一个"目标(target)", 不像真正的目标那样会生成一个目标文件.

3.5K30

Make参数

如果没有这个参数,make运行命令运行多少就运行多少。如果有一个以上的“-j”参数,那么仅最后一个“-j”才是有效的。...(注意这个参数在MS-DOS中是无用的) -k –keep-going 出错也不停止运行。如果生成一个目标失败了,那么依赖于其上的目标就不会被执行了。...-t –touch 相当于UNIX的touch命令,只是把目标的修改日期变成最新的,也就是阻止生成目标的命令运行。 -v –version 输出make程序的版本、版权等关于make的信息。...-w –print-directory 输出运行makefile之前和之后的信息。这个参数对于跟踪嵌套式调用make很有用。 –no-print-directory 禁止 -w 选项。...-W –what-if= –new-file= –assume-file= 假定目标需要更新,如果和“-n”选项使用,那么这个参数会输出该目标更新运行动作。

1.5K11
领券