CMake使用NASM进行链接,但失败。

aba*_*bab 5 cmake nasm

我有一个要在一次运行中进行编译的汇编文件。但是,以下代码失败:

enable_language(ASM_NASM)
set(CMAKE_ASM_NASM_FLAGS "${CMAKE_ASM_NASM_FLAGS} -f bin")
add_executable(test test.s)
Run Code Online (Sandbox Code Playgroud)

CMake首先运行:nasm -f bin -o test.s.o test.s
然后:nasm -f bin -o test test.s.o
最后一步失败,因为test.so已经是一个二进制文件。

我的问题是:如何禁用第一步编译?

小智 6

nasm模块中的cmake似乎有一个错误。Cmake调用nasm进行链接,这显然是错误的(这就是为什么您看到两次对nasm的调用的原因)。要设置修补程序

set(CMAKE_ASM_NASM_LINK_EXECUTABLE "ld <FLAGS> <CMAKE_ASM_NASM_LINK_FLAGS> <LINK_FLAGS> <OBJECTS>  -o <TARGET> <LINK_LIBRARIES>")
Run Code Online (Sandbox Code Playgroud)