【问题标题】:Compile asm file with c files using cmake使用cmake编译带有c文件的asm文件
【发布时间】:2021-11-23 06:26:38
【问题描述】:

我需要使用 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 在您调用 enable_language(ASM) 时检查 asm 编译器并为其调整选项。如果要更改编译器,需要设置CMAKE_ASM_COMPILER before enable_language call。
  • 完成了,但我还是有一些问题
  • 请以minimal reproducible example 的形式将整个代码添加到问题帖子中。另外,请在配置项目时添加 CMake 的输出(当您运行 cmake 时):此输出包含 CMake 检测到的编译器描述。

标签: c assembly cmake nasm


【解决方案1】:

我已经解决了这个问题:

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

    设置(CMAKE_ASM_NASM_COMPILER /usr/bin/nasm) 设置(CMAKE_ASM_NASM_SOURCE_FILE_EXTENSIONS asm) 设置(CMAKE_ASM_NASM_OBJECT_FORMAT 精灵)

.....

  1. 里面的会按如下方式修改:

    启用语言(C ASM_NASM)

    包括(源列表) add_library(myLib ${sources} foo.asm)

    set_property( SOURCE ${sources} 附加属性 COMPILE_DEFINITIONS "MYDEF1" ;"MYDEF2")

    set_source_files_properties(${sources} PROPERTIES COMPILE_FLAGS -fPIC)

    set_property( foo.asm 附加 属性编译_定义 "QNXNTO")

    target_include_directories(myLib PRIVATE ../}

输出:

/usr/bin/nasm  -DQNXNTO -f elf  -o CMakeFiles/mylib.dir/foo.asm.o -c foo.asm

【讨论】:

    猜你喜欢
    • 2019-04-16
    • 2020-02-05
    • 1970-01-01
    • 1970-01-01
    • 2018-06-25
    • 2017-04-28
    • 2011-12-03
    • 1970-01-01
    相关资源
    最近更新 更多