使用cmake编译带有c文件的asm文件
Compile asm file with c files using cmake
我需要用CMake编译一个由c文件和一个asm文件组成的静态库。在 lib 目录中,我有一个类似于以下内容的 CMakeLists.txt
:
I have moved the
set(CMAKE_ASM_COMPILER nasm)
in an upper cmake list and modified de inner
enable_language(C ASM)
include(sourcelist)
add_library(myLib ${sources} foo.asm)
set_property( SOURCE ${sources} APPEND PROPERTY
COMPILE_DEFINITIONS "MYDEF1" ;"MYDEF2")
set_source_files_properties(${sources} PROPERTIES COMPILE_FLAGS -fPIC)
set_property(
foo.asm
APPEND
PROPERTY COMPILE_DEFINITIONS
"QNXNTO")
set_source_files_properties(${sources_asm} PROPERTIES COMPILE_FLAGS "-f elf ")
target_include_directories(myLib PRIVATE ../}
其中 ${sources}
是我编译正确的 c 文件,但是
当我尝试编译我得到的 asm 文件时
/usr/bin/nasm -DQNXNTO -f elf -o CMakeFiles/mylib.dir/foo.asm.o -c foo.asm
nasm: error: unrecognised option `-c'
So I have the problem with -c option, it should be -s
如何删除不需要的“-c”?
我已经解决了这个问题:
在外部 cmake 列表集中
.....
设置(CMAKE_ASM_NASM_COMPILER /usr/bin/nasm)
设置(CMAKE_ASM_NASM_SOURCE_FILE_EXTENSIONS汇编)
设置(CMAKE_ASM_NASM_OBJECT_FORMAT小精灵)
.....
内层修改如下:
enable_language(CASM_NASM)
包括(来源列表)
add_library(myLib ${sources} foo.asm)
set_property( 源 ${sources} 附加 属性
COMPILE_DEFINITIONS "MYDEF1" ;"MYDEF2")
set_source_files_properties(${sources} 属性 COMPILE_FLAGS -fPIC)
set_property(
foo.asm
附加
属性 COMPILE_DEFINITIONS
"QNXNTO")
target_include_directories(myLib 私有 ../}
输出:
/usr/bin/nasm -DQNXNTO -f elf -o CMakeFiles/mylib.dir/foo.asm.o -c foo.asm
我需要用CMake编译一个由c文件和一个asm文件组成的静态库。在 lib 目录中,我有一个类似于以下内容的 CMakeLists.txt
:
I have moved the
set(CMAKE_ASM_COMPILER nasm)
in an upper cmake list and modified de inner
enable_language(C ASM)
include(sourcelist)
add_library(myLib ${sources} foo.asm)
set_property( SOURCE ${sources} APPEND PROPERTY
COMPILE_DEFINITIONS "MYDEF1" ;"MYDEF2")
set_source_files_properties(${sources} PROPERTIES COMPILE_FLAGS -fPIC)
set_property(
foo.asm
APPEND
PROPERTY COMPILE_DEFINITIONS
"QNXNTO")
set_source_files_properties(${sources_asm} PROPERTIES COMPILE_FLAGS "-f elf ")
target_include_directories(myLib PRIVATE ../}
其中 ${sources}
是我编译正确的 c 文件,但是
当我尝试编译我得到的 asm 文件时
/usr/bin/nasm -DQNXNTO -f elf -o CMakeFiles/mylib.dir/foo.asm.o -c foo.asm
nasm: error: unrecognised option `-c'
So I have the problem with -c option, it should be -s
如何删除不需要的“-c”?
我已经解决了这个问题:
在外部 cmake 列表集中 .....
设置(CMAKE_ASM_NASM_COMPILER /usr/bin/nasm) 设置(CMAKE_ASM_NASM_SOURCE_FILE_EXTENSIONS汇编) 设置(CMAKE_ASM_NASM_OBJECT_FORMAT小精灵)
.....
内层修改如下:
enable_language(CASM_NASM)
包括(来源列表) add_library(myLib ${sources} foo.asm)
set_property( 源 ${sources} 附加 属性 COMPILE_DEFINITIONS "MYDEF1" ;"MYDEF2")
set_source_files_properties(${sources} 属性 COMPILE_FLAGS -fPIC)
set_property( foo.asm 附加 属性 COMPILE_DEFINITIONS "QNXNTO")
target_include_directories(myLib 私有 ../}
输出:
/usr/bin/nasm -DQNXNTO -f elf -o CMakeFiles/mylib.dir/foo.asm.o -c foo.asm