source

C와 어셈블리 소스를 혼합하고 cmake로 빌드

factcode 2023. 9. 1. 21:21
반응형

C와 어셈블리 소스를 혼합하고 cmake로 빌드

저는 어셈블리 코드와 C 소스 파일을 혼합한 avr-gcc 프로젝트를 구축하기 위해 이클립스를 사용하고 있습니다.이클립스의 자동 메이크 파일 생성을 없애고 싶습니다. 메이크 파일에 대한 일부 프로세스를 자동화해야 하기 때문입니다.

저는 예전에 cmake를 사용한 적이 있어서 만족스러웠기 때문에 그것을 사용하여 제 소스 파일을 컴파일해보고 싶습니다.모든 것이 C 소스로 예상대로 실행됩니다.문제는 마지막에 몇 개의 어셈블리 파일(실제 2개)을 컴파일하여 대상에 추가해야 한다는 것입니다.

제가 검색을 해봤는데 방법을 못 찾았어요. 이거 어떻게 하는지 아시는 분 있어요?

문제는 이클립스에 -x 어셈블리 위드 cpp가 있다는 것입니다.

gcc 인수 목록에 추가되었습니다.이 파라미터를 asm 파일에 대해서만 표준 gcc 인수 목록에 선택적으로 추가하는 방법을 찾아야 합니다.저는 이것을 할 방법을 찾지 못했습니다.

미리 감사드립니다.

솔루션: CMakeLists에서 설정합니다.동일한 목록에서 컴파일할 모든 파일을 txtxt

enable_language(C ASM)

set ( SOURCES 
    foo.c
    bar.c
    foobar.s
)

add_executable(program  ${SOURCES} ) 

Toolchain 파일에 다음을 배치해야 합니다.

SET(ASM_OPTIONS "-x assembler-with-cpp")
SET(CMAKE_ASM_FLAGS "${CFLAGS} ${ASM_OPTIONS}" )

두 번째 줄은 sm 파일을 컴파일하는 동안 추가 옵션을 전달해야 하는 경우입니다.모든 CFLAGS와 ASM_OPTIONS를 통과하고 싶었습니다.

Cmake는 조립자를 즉시 지원합니다.프로젝트에서 "ASM" 언어를 사용하도록 설정하십시오.어셈블러 원본 파일을 전처리해야 하는 경우 원본 파일의 컴파일 옵션도 설정합니다.

project(assembler C ASM)
set_property(SOURCE foo.s APPEND PROPERTY COMPILE_OPTIONS "-x" "assembler-with-cpp")
add_executable(hello foo.s bar.c)

귀사의 솔루션을 기반으로 한 가장 간단한 솔루션 중 하나는 다음과 같습니다.

SET(CMAKE_ASM_FLAGS "${CFLAGS} -x assembler-with-cpp")

언급URL : https://stackoverflow.com/questions/15132185/mixing-c-and-assembly-sources-and-build-with-cmake

반응형