【发布时间】: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_COMPILERbeforeenable_languagecall。 -
完成了,但我还是有一些问题
-
请以minimal reproducible example 的形式将整个代码添加到问题帖子中。另外,请在配置项目时添加 CMake 的输出(当您运行
cmake时):此输出包含 CMake 检测到的编译器描述。