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.s
或main.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 生成汇编文件然后编译成可执行文件的主要内容,如果未能解决你的问题,请参考以下文章