使用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”?

我已经解决了这个问题:

  1. 在外部 cmake 列表集中 .....

    设置(CMAKE_ASM_NASM_COMPILER /usr/bin/nasm) 设置(CMAKE_ASM_NASM_SOURCE_FILE_EXTENSIONS汇编) 设置(CMAKE_ASM_NASM_OBJECT_FORMAT小精灵)

.....

  1. 内层修改如下:

    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