如何使用 CMake 编译带有 NASM 应用程序的 64 位 macOS 应用程序?
How does one compile a 64 bit macOS application with NASM application using CMake?
查看 source 设置 CMAKE_ASM_NASM_OBJECT_FORMAT
应该就足够了,但事实并非如此。
我希望以下内容能够使用 macho64 文件格式为 macOS 应用程序创建有效的构建配置。
project(hello_world ASM_NASM)
set(CMAKE_ASM_NASM_OBJECT_FORMAT macho64)
add_executable(hello_world source/main.asm)
然而,当 运行 与 VERBOSE=1
/usr/local/bin/nasm -f macho -o CMakeFiles/main.dir/source/main.asm.o /hello-world/source/main.asm
/hello-world/source/main.asm:6: error: instruction not supported in 32-bit mode
/hello-world/source/main.asm:7: error: instruction not supported in 32-bit mode
/hello-world/source/main.asm:8: error: instruction not supported in 32-bit mode
/hello-world/source/main.asm:9: error: instruction not supported in 32-bit mode
/hello-world/source/main.asm:12: error: instruction not supported in 32-bit mode
/hello-world/source/main.asm:13: error: instruction not supported in 32-bit mode
make[2]: *** [CMakeFiles/main.dir/source/main.asm.o] Error 1
make[1]: *** [CMakeFiles/main.dir/all] Error 2
make: *** [all] Error 2
我们可以清楚地看到 mach-o 的 32 位版本而不是预期的 64 位版本被传递到格式标志:macho64
.
版本
- CMake 3.12.2
- NASM 2.13.03
- macOS 10.14
在 project()
调用时检查编译器。
您需要在调用之前移动设置CMAKE_ASM_NASM_OBJECT_FORMAT
变量。
查看 source 设置 CMAKE_ASM_NASM_OBJECT_FORMAT
应该就足够了,但事实并非如此。
我希望以下内容能够使用 macho64 文件格式为 macOS 应用程序创建有效的构建配置。
project(hello_world ASM_NASM)
set(CMAKE_ASM_NASM_OBJECT_FORMAT macho64)
add_executable(hello_world source/main.asm)
然而,当 运行 与 VERBOSE=1
/usr/local/bin/nasm -f macho -o CMakeFiles/main.dir/source/main.asm.o /hello-world/source/main.asm
/hello-world/source/main.asm:6: error: instruction not supported in 32-bit mode
/hello-world/source/main.asm:7: error: instruction not supported in 32-bit mode
/hello-world/source/main.asm:8: error: instruction not supported in 32-bit mode
/hello-world/source/main.asm:9: error: instruction not supported in 32-bit mode
/hello-world/source/main.asm:12: error: instruction not supported in 32-bit mode
/hello-world/source/main.asm:13: error: instruction not supported in 32-bit mode
make[2]: *** [CMakeFiles/main.dir/source/main.asm.o] Error 1
make[1]: *** [CMakeFiles/main.dir/all] Error 2
make: *** [all] Error 2
我们可以清楚地看到 mach-o 的 32 位版本而不是预期的 64 位版本被传递到格式标志:macho64
.
版本
- CMake 3.12.2
- NASM 2.13.03
- macOS 10.14
在 project()
调用时检查编译器。
您需要在调用之前移动设置CMAKE_ASM_NASM_OBJECT_FORMAT
变量。