cmake 生成汇编文件然后编译成可执行文件

Posted

技术标签:

【中文标题】cmake 生成汇编文件然后编译成可执行文件【英文标题】:cmake generate assembly file then compile it into executable 【发布时间】:2016-10-30 13:50:10 【问题描述】:

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

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

add_library(Tutorial Hello.cpp)
set_target_properties(Tutorial PROPERTIES COMPILE_FLAGS "-S") 
install (TARGETS Tutorial DESTINATION bin)

【问题讨论】:

Call shell command after asm file generation in cmake的可能重复 【参考方案1】:

CMake 总是为您生成“汇编文件规则”。所以假设你有:

file(WRITE main.cpp "int main()  return 0; ")
add_executable(MyMain main.cpp)

您可以致电make 获取目标main.smain.cpp.s,例如:

> make main.cpp.s
Compiling CXX source to assembly CMakeFiles/MyMain.dir/main.cpp.s

但是,如果您想自动化一切,请参阅我在您的其他问题中的回答:

Call shell command after asm file generation in cmake

【讨论】:

【参考方案2】:

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

您还可以告诉 GCC 使用 -save-temps 保留中间文件。

【讨论】:

我认为-save-temps 不适合我,因为我想在链接之前修改 asm 文件。 然后使用-S,并将其传回gcc。你到底想完成什么?可能有一种方法可以直接在源代码中执行您想要的操作。 我正在尝试在 cmake 中实现这一点。它正在终端中工作。我用-S创建了asm文件,我可以修改asm文件,也可以编译它。我的问题是我无法在 cmake 中实现它。

以上是关于cmake 生成汇编文件然后编译成可执行文件的主要内容,如果未能解决你的问题,请参考以下文章

C语言——编译器如何将C源文件编译成可执行代码?

简述将源程序编译成可执行程序的过程

make cmake catkin_make

C代码编译成可执行程序的过程

c语言如何把c程序编译成可执行的exe文件

python的程序可以编译成二进制可执行文件么