
[vitis] Vitis Unified CMake에서 하위 폴더 .c 자동 빌드하기
문제 상황
Vitis Unified(2025.2)에서 Application을 만들면 기본 CMakeLists.txt 에 아래 코드가 들어 있다.
aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR} current_dir_sources)
list(APPEND _sources ${current_dir_sources})
이 방식의 문제는 아래와 같다.
src바로 아래의.c파일만 자동으로 포함- 하위 폴더(
drivers/,hw/등)에 있는.c파일은 빌드에 포함되지 않음 .c파일을 하나씩 수동으로 추가해야 하는 상황 발생
해결 방법
aux_source_directory()는 재귀 탐색을 지원하지 않는다.
하위 폴더까지 자동으로 포함하려면 file(GLOB_RECURSE) 를 사용해야 한다.
교체 코드
file(GLOB_RECURSE recursive_sources
CONFIGURE_DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/*.c
)
list(APPEND _sources ${recursive_sources})
${CMAKE_CURRENT_SOURCE_DIR}기준- 모든 하위 디렉터리를 재귀적으로 탐색
.c파일을 전부 수집해서_sources에 추가- 새로운
.c파일이 추가되면 CMake 자동 갱신
적용 전 / 후 비교
Before
src/
├─ main.c ✅
├─ drivers/
│ └─ fan.c ❌ (빌드 안 됨)
After
src/
├─ main.c ✅
├─ drivers/
│ └─ fan.c ✅ (자동 빌드)
끝 :)
0 댓글