Cmake - Want to see intermediate .i files

2019-05-20 07:53发布

I want to know how to make Cmake give me a target that will allow me to save the .i files from my C program with the macro expansion, etc completed.

Will I need to make a custom target to do this?

2条回答
ゆ 、 Hurt°
2楼-- · 2019-05-20 08:06

If your are using the Makefile generator, then there are already targets for .i files. Type make help, and you will see all the targets, including those suffixed by .i, .s, and .o.

查看更多
仙女界的扛把子
3楼-- · 2019-05-20 08:08

If you don't want to manually run the make targets and filter for .i extensions, you could do it like this:

for subdir in */
do 
    (cd $subdir && make $(make help |& grep \\.i$ | cut -c4-))
done

Alternatively, I sometimes used compile_command.json with npm's command line tool for json:

cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON # ... 
json < compile_commands.json -ga "command" | sed 's/.cpp.o -c/.cpp.ii -E/' | sh -

Note however that there might be edge cases (like target directories that have not been created yet).

查看更多
登录 后发表回答