C++ cmake生成程序集文件,然后将其编译为可执行文件

C++ cmake生成程序集文件,然后将其编译为可执行文件,c++,gcc,assembly,cmake,C++,Gcc,Assembly,Cmake,我使用的是cmake,假设我有一个.cpp文件。 在cmake中,是否可以先将此cpp文件编译成程序集代码,然后执行其他操作,然后从生成的程序集创建可执行文件 更新: 所以基本上我想把Hello.cpp编译成Hello.s(稍后修改它,然后创建对象文件)。但是,我无法使用该代码生成asm文件(它只是创建一个Hello.a静态库): 您可以告诉GCC仅使用-S选项生成程序集 您还可以告诉GCC使用-save temp保存中间文件,CMake总是为您生成“程序集文件规则”。假设你有: file(WR

我使用的是cmake,假设我有一个.cpp文件。 在cmake中,是否可以先将此cpp文件编译成程序集代码,然后执行其他操作,然后从生成的程序集创建可执行文件

更新: 所以基本上我想把Hello.cpp编译成Hello.s(稍后修改它,然后创建对象文件)。但是,我无法使用该代码生成asm文件(它只是创建一个Hello.a静态库):


您可以告诉GCC仅使用
-S
选项生成程序集


您还可以告诉GCC使用
-save temp

保存中间文件,CMake总是为您生成“程序集文件规则”。假设你有:

file(WRITE main.cpp "int main() { return 0; }")
add_executable(MyMain main.cpp)
您可以为目标
main.s
main.cpp.s
调用
make
,如:

> make main.cpp.s
Compiling CXX source to assembly CMakeFiles/MyMain.dir/main.cpp.s
但如果你想让一切都自动化,请看我对你另一个问题的回答:


我认为
-save temps
对我来说不合适,因为我想在链接之前修改asm文件。然后使用
-S
,并将其传递回gcc。你到底想完成什么?可能有一种方法可以直接在源代码中实现您想要的功能。我正试图在cmake中实现这一点。它正在候机楼工作。我用
-S
创建asm文件,我可以修改asm文件,也可以编译它。我的问题是我无法在cmake中实现这一点。可能会重复
> make main.cpp.s
Compiling CXX source to assembly CMakeFiles/MyMain.dir/main.cpp.s