2014-09-18 3 views
0

내 프로젝트에 두 개의 파일이 있습니다.
하나는 ".c"파일이고, 하나는 ".asm"파일입니다. 먼저 두 파일을 두 개의 ".o"개체 파일로 컴파일 한 다음 사용자 지정 링커 스크립트를 사용하여 함께 연결합니다.
현재 프로젝트를 빌드하기 위해 수동 명령을 사용하는 간단한 bash 스크립트를 사용하고 있지만 프로젝트 크기가 증가 할 것으로 예상되므로 프로젝트를 기본 빌드 시스템으로 사용하도록 cmake를 사용하려고합니다.cmake를 사용하여 두 파일을 컴파일하고 연결 하시겠습니까?

cmake의 문서를 검색하고 많은 시간 동안 googled했습니다. 그러나이 경우 유용 할 수도있는 cmake의 변수 중 일부를 선정했는데이를 달성하는 방법을 설명하는 샘플을 찾을 수 없습니다 .

아무에게도 이것을 달성하는 방법에 대한 간단한 샘플 코드를 제공 할 수 있습니까?

+0

그래서 cmake에서 어셈블리 파일을 컴파일하는 방법을 묻는 중입니까? – randomusername

+0

두 가지 문제가 있습니다. 하나는 어셈블리를 컴파일하는 것이지만, 나는 그것을 알아 냈다고 생각합니다. 그래서 주요 문제는 연결 부분입니다. –

답변

1

예를 들어 질문하셨습니까? 여기 CMake는 조립 및 작동 링크는 (적어도 프로그래머의 관점에서) 동일한 단계에서 그룹화되는 방식으로 인해의 cmake wiki

set(mySrcs foo.c bar.c) 

set(can_use_assembler FALSE) 

# test wether it is a x86 machine and as/gas is available 
if("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "i.86") 
    enable_language(ASM-ATT) 
    if(CMAKE_ASM-ATT_COMPILER_WORKS) 
     set(can_use_assembler TRUE) 
     set(mySrcs ${mySrcs} codec_i86.s) 
    endif(CMAKE_ASM-ATT_COMPILER_WORKS) 
endif("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "i.86") 

# no assembler found 
if(not can_use_assembler) 
    set(mySrcs ${mySrcs} codec_generic.c) 
endif(not can_use_assembler) 

add_executable(player ${mySrcs}) 

에서 하나. 따라서 add_executable이 자동으로 모든 것을 처리합니다.

링커 스크립트를 포함 시키려면 CMake로 인해 더 어려워집니다. 조사 할 수있는 가장 좋은 곳은 over here입니다. 예제와 지침이 너무 길어서 SO 답안 상자에 복사 할 수 없으므로이 책의 내용을 남겨 두겠습니다.

+0

이것은 링크 부분에 응답하지 않습니다. 또한 저는 이미 어셈블리 컴파일 부분을 처리했다고 설명했습니다. –

+0

'add_executable' 명령은 당신을 위해 연결을합니다. – randomusername

+0

감사합니다. 그러나 사용자 정의 링커 스크립트를 어떻게 지정해야합니까? –