Keil uVision4 (MDK-ARM)와 함께 빌드 서버를 사용하고 빌드를 스크립트하고 makefile을 사용하려면 어떻게해야합니까?


13

매일 빌드를 실행하거나 Keil MDK-ARM 기반 프로젝트의 체크인 / 커밋 트리거 빌드를 원합니다. 지금까지 IDE의 배치 파일 기능을 사용했습니다. 이 배치 파일 체크인 및 관련 다음, 적어도 IDE 한 번 프로젝트를 빌드 할 필요합니까 .__i._iaIDE에서 만든 파일입니다.

또한 IDE는 Windows PATH 변수와 같은 많은 사용자 특정 항목을 배치 파일에 넣습니다. 빌드 할 배치 파일은 다른 개발자의 커밋마다 변경 될 수 있으므로 여러 개발자에게 문제가 될 수 있습니다.

궁극적으로 armcc , armasmArmLink에 대한 다양한 스위치를 추적하면됩니다 .

Keil uVision 프로젝트를 빌드하기 위해보다 표준적인 makefile을 사용하는 방법이 있습니까? uVision 프로젝트 파일을보다 유지 보수가 쉬운 빌드 스크립트로 변환하는 방법이 있습니까?


빌드 서버를 구현하고 있다고 생각합니다. 불행히도, Keil 개발 시스템에 대한 경험이 없어서 정말 도와 드릴 수 없습니다. 솔루션을 사용할 때 솔루션을 게시하도록 권장합니다.
semaj

Keil 도구 자체가 아닌 PATH 종속성이나 __i / _ia 파일없이 배치 스크립트를 통해 Keil 프로젝트를 빌드합니다. 이것에 대한 더 많은 정보를 공유 할 수 있습니까?
Digikata

1
@digikata 배치 파일을 생성하기 위해 IDE 내에서 옵션을 사용하고 있습니다. 이것은 Keil의 문서에 설명되어 있습니다. 여기 에 설명 된 명령 줄 구동 방법이 있지만 해당 명령에서 적절한 콘솔 출력을 얻는 데 어려움이있었습니다. 두 번째 방법은 새 프로세스를 시작하고 빌드 서버에 적합한 방법이 아닌 출력 창을 출력 파일로 복사하는 옵션을 제공합니다.
rmaVT

나중에 참조 할 수 있도록이 질문의 범위는 다른 Stack Exchange 사이트와 공유되는 영역에 있습니다. Keil과 같은 임베디드 툴체인에 대한 질문은 여기에서 환영합니다! Stack Overflow 도 환영 하지만 어느 곳에서나 자유롭게 물어보십시오.
Kevin Vermeer

1
@KevinVermeer-네, 같은 말을하려고했습니다. rmaVT, EE SE의 "keil" 이라는 질문 만큼 교육적인 것처럼 SO의 " keil " 이라는 질문을 찾아 볼 수 있습니다 .
davidcary

답변:


8

이것이 내가 최근에 생각해 낸 가장 좋은 방법입니다.

빌드 옵션에서 배치 파일 작성을 선택하십시오.

IDE에서 빌드를 시작하면 IDE에 설정된 옵션을 기반으로 여러 텍스트 파일과 함께 배치 파일이 작성됩니다. 소스 제어에서 이러한 IDE 생성 파일을 추적해야합니다.

  • *.박쥐
  • * .ini
  • *.__나는
  • * ._ ia
  • * .lnp
  • * .sct

그런 다음 빌드 스크립트에서 foo.bat를 시작할 수 있습니다.

생성 된 배치 파일에서 안정적으로 빌드하려는 경우 소스 제어에서 추적해야하는 추가 파일이 생성되지만 Keil 프로젝트 파일 (foo.uvproj) 및 IDE에 의존 할 필요가 없습니다. .uvproj 파일보다 컴파일러 플래그가 포함 된 생성 된 텍스트 파일 (* .__ i)의 차이점을 비교하여 변경 내용을 추적하는 것이 더 쉽다는 것을 알았습니다. 또한 배치 파일은 다양한 도구 인 armasm, armcc, armlink를 직접 호출합니다. 이를 통해 각 단계를 직접 출력 할 수있을뿐만 아니라 향후 필요한 경우 프로젝트를 다른 툴 체인으로 마이그레이션 할 수있는 가능성도 높아질 것입니다.

이 답변이 내 원래의 질문과 비슷하게 들리지만 Keil의 도구로 스크립트 빌드를 실행하는 더 좋은 방법을 모르겠습니다. 나는 다른 사람들에게서 어떤 일이 생길지 물었다. @digikata의 답변에 완전히 동의하지는 않지만 컴파일러 플래그와 메모리 맵을 더 쉬운 추적 형식으로 사용하고 올인원 컴파일을 시작하는 대신 컴파일에 더 많은 유닉스 스타일 도구를 사용하는 것을 선호합니다. IDE와 함께. IDE의 올인원 컴파일은 내 워크 스테이션에서 잘 작동하지만 빌드 서버에서는 작동하지 않는다고 생각합니다.

편집 : 빌드 서버는 Windows Server 2003에서 실행됩니다. 배치 파일이 아닌 IDE 명령 줄 인터페이스를 사용하는 것을 고백해야합니다. 이것은 관리하기가 너무 어려워졌습니다.


이 작업에 대한 질문-빌드 서버가 어떤 운영 체제를 실행하고 있습니까? 리눅스, Windows 7, Windows Server 2003, Windows Server 2008?
크림슨 X

질문에 답변 해 주셔서 감사합니다! arm 툴체인이 Keil 's Documentation에 따라 Windows Server 2003 및 2008 R2에서 작동하는 것처럼 보입니다 . 편집에 관한 후속 질문 : uvproj 파일의 변경을 어떻게 처리합니까 (예 : 컴파일 할 프로젝트에 새 파일 추가)? 빌드 서버로 승격 된 파일에서 컴파일 옵션을 수동으로 변경해야합니까?
CrimsonX 2019

.uvproj 파일을 소스 제어하에 두어야합니다. 생성 된 .userxxxxx 파일에도 불구하고 일부 사용자 기본 설정이 여전히 파일에 남아 있지만, 이것은 잘 작동합니다. 빌드 서버는 동일한 "프로젝트"를 열고 빌드하면됩니다.
rmaVT

3

명령 줄을 통해 Keil IDE를 호출하여 Makefile 내에서 빌드 파일이 아닌 빌드 파일을 빌드합니다. 일반적으로 scm을 통해 프로젝트 파일을 잠 그거나 관련 프로젝트 이름을 바꾸는 참조 빌드 사본을 작성하는 것이 좋습니다.

IDE는 읽기 전용 프로젝트 파일로 작업하는 것이 매우 기쁩니다. 잠그면 잠금을 해제하면 설정을 변경하고 저장하고 다시 체크인하기 위해 잠금을 해제해야합니다. 상당히 안정적인 경우 프로젝트에서이 점은 아주 사소한 것이며 심지어 바람직합니다.

참조 사본을 가져 오면 프로젝트 설정이 변경 될 때, 특히 프로젝트 파일이 컴파일에서 추가되거나 삭제 될 때 빌드가 중단되는 경향이 있습니다. 이러한 변경 사항을 정확하게 캡처하는 것이 반드시 나쁘지는 않지만 빌드를 유지하는 데 필요한 추가 단계입니다.

어느 쪽이든, "-o"옵션을 통해 출력을 로그 파일로 리디렉션하면 전체 출력 로그에 액세스 할 수 있습니다. 통나무는 한 번에 한 줄로 나오지 않지만 모두 거기에있는 것처럼 보입니다. (나는 실제로 일식 CDT 환경과의 통합을 위해 Keil 오류 형식을 GNU fmt로 구문 분석합니다. 빌드 후 오류 / 경고로 바로 이동할 수 있습니다)

명령 행 빌드는 또한 __i, __ia 파일을 생성하므로 빌드 서버의 버전 제어에 들어 가지 않아도됩니다.

도움이 되었기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.