我有一个汇编程序文件,我想在一次运行中编译。但是,以下代码失败:
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已经是二进制文件了。
我的问题是:如何禁用第一个编译步骤?
答案 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>")