【问题标题】:cmake generate assembly file then compile it into executablecmake 生成汇编文件然后编译成可执行文件
【发布时间】: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)

【问题讨论】:

标签: c++ gcc assembly 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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 我认为-save-temps 不适合我,因为我想在链接之前修改 asm 文件。
    • 然后使用-S,并将其传回gcc。你到底想完成什么?可能有一种方法可以直接在源代码中执行您想要的操作。
    • 我正在尝试在 cmake 中实现这一点。它正在终端中工作。我用-S创建了asm文件,我可以修改asm文件,也可以编译它。我的问题是我无法在 cmake 中实现它。
    猜你喜欢
    • 1970-01-01
    • 2020-05-04
    • 2021-10-18
    • 1970-01-01
    • 2019-03-02
    • 2012-08-10
    • 1970-01-01
    • 2014-08-30
    • 2017-03-29
    相关资源
    最近更新 更多