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
'source' 카테고리의 다른 글
mysql-native 드라이버를 사용하여 DB에 연결한 후 예외 발생 (0) | 2023.09.01 |
---|---|
Android에서 EditText를 숫자 값만 허용하도록 설정하려면 어떻게 해야 합니까? (0) | 2023.09.01 |
html 웹 페이지 전체를 에이잭스 응답으로 대체하는 방법은 무엇입니까? (0) | 2023.08.27 |
아이폰: WWDR 중급 인증서란 무엇입니까? (0) | 2023.08.27 |
도커 컨테이너의 볼륨을 어떻게 나열합니까? (0) | 2023.08.27 |