前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Clion快速查看cpp preprocess 文件

Clion快速查看cpp preprocess 文件

原创
作者头像
望天
发布2020-11-23 22:05:02
1.7K0
发布2020-11-23 22:05:02
举报
文章被收录于专栏:along的开发之旅along的开发之旅

这里其实应该说CMake管理的项目,如何快速查看其Preprocess文件。因为Clion默认使用CMake管理文件,所以这里对Clion也适用。

注意:仅适用CMake+make,对于CMake+ninja等不适用。

对于Clion项目,编译时会生成cmake-build-debug目录,里面是cmake编译项目的产物。如下图:

Clion项目结构
Clion项目结构

注意,这里最重要的是Makefile文件,里面会有一系列任务。

这里我们最关注的是“main.cpp.i”,其内容如下,作用是生成预处理preprocess文件。

代码语言:javascript
复制
# target to preprocess a source file
main.cpp.i:
	$(MAKE) -f CMakeFiles/cppConcurrencyDemo.dir/build.make CMakeFiles/cppConcurrencyDemo.dir/main.cpp.i

和Makefile同级,然后执行“make main.cpp.i”,就会生成对应的preprocess文件。如下图:

main.cpp.i 预处理文件
main.cpp.i 预处理文件

这里来看下源文件和预处理后的文件对比:

查如何生成预处理文件是因为,写modern cpp时,想看下using后的会不会被预处理,“gcc -E”在大项目中不实用,所以找下有没有更智能更自动化的方法。

下图这里,左边的define在右侧可以看到已经被预处理了,但是using这些是不能被预处理的.

cpp和预处理文件对比
cpp和预处理文件对比

举一反三,我们在看下Makefile里还有什么有意思的target:

代码语言:javascript
复制
# target to generate assembly for a file
main.cpp.s:
	$(MAKE) -f CMakeFiles/cppConcurrencyDemo.dir/build.make CMakeFiles/cppConcurrencyDemo.dir/main.cpp.s

可以看到,通过"make main.cpp.s",我们就可以生成对应的汇编文件。

这些任务,都可以从Help target中找到。

代码语言:javascript
复制
# Help Target
help:
	@echo "The following are some of the valid targets for this Makefile:"
	@echo "... all (the default if no target is provided)"
	@echo "... clean"
	@echo "... depend"
	@echo "... rebuild_cache"
	@echo "... edit_cache"
	@echo "... cppConcurrencyDemo"
	@echo "... main.o"
	@echo "... main.i"
	@echo "... main.s"

由于是借助于CMake和Makefile的能力,所以对于多文件的项目也是可以的。

参考:

http://anadoxin.org/blog/generating-preprocessed-sources-in-cmake-projects.html

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档