如何在CMake中为不同的体系结构编译不同的程序集文件?例如,我有x86-64的x86_64.S,x86-32的x86_32.S,ARMv8的ARM7.S,ARMv8 AArch64的AArch64.S。如何只为目标体系结构编译一个程序集文件?
发布于 2022-05-10 16:16:30
编辑:正如@KamilCuk所提到的,没有必要使用add_custom_command() cmake可以自动检测如何管理源文件。
add_executable(my_exec main.c out.o)
if( CMAKE_SYSTEM_PROCESSOR MATCHES "arm" )
target_sources(my_exec ARMV7.S)
elseif( CMAKE_SYSTEM_PROCESSOR MATCHES "x86" )
target_sources(my_exec x86_64.S)
endif()根据这个答案How to detect target architecture using CMake?,您可以根据体系结构添加一个自定义命令。以下几点可有所帮助:
if( CMAKE_SYSTEM_PROCESSOR MATCHES "arm" )
add_custom_command(
OUTPUT out.o
COMMAND as -o out.o ARMV7.S
DEPENDS ARMV7.S
)
elseif( CMAKE_SYSTEM_PROCESSOR MATCHES "x86" )
add_custom_command(
OUTPUT out.o
COMMAND nasm -o out.o x86_64.S
DEPENDS x86_64.S
)
endif()
add_executable(my_exec main.c out.o)根据你的需要调整条件。
https://stackoverflow.com/questions/72181762
复制相似问题