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

时间:2015-01-30 17:40:19

标签: cmake nasm

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

enable_language(ASM_NASM)
set(CMAKE_ASM_NASM_FLAGS "${CMAKE_ASM_NASM_FLAGS} -f bin")
add_executable(test test.s)

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

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

1 个答案:

答案 0 :(得分:4)

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

set(CMAKE_ASM_NASM_LINK_EXECUTABLE "ld <FLAGS> <CMAKE_ASM_NASM_LINK_FLAGS> <LINK_FLAGS> <OBJECTS>  -o <TARGET> <LINK_LIBRARIES>")