这是我构建 linux kernle hello world 模块的 cmake。
if ( UNIX )
# Version number
set ( DRV_MAJOR 1 )
set ( DRV_MINOR 0 )
set ( DRV_PATCH 0 )
set ( DRV_VERSION ${DRV_MAJOR}.${DRV_MINOR}.${DRV_PATCH} )
configure_file( drv_config.h.cmake ${CMAKE_CURRENT_SOURCE_DIR}/drv_config.h )
execute_process(COMMAND uname -r
OUTPUT_VARIABLE os_version
OUTPUT_STRIP_TRAILING_WHITESPACE)
set(module_path /lib/modules/${os_version})
set(module_build_path ${module_path}/build)
add_custom_command(OUTPUT drv.ko
COMMAND ${CMAKE_MAKE_PROGRAM} -C ${module_build_path} M=${CMAKE_CURRENT_SOURCE_DIR}
DEPENDS driver.c Kbuild
COMMENT "Building drv.ko"
)
add_custom_target(drv ALL DEPENDS drv.ko)
endif( UNIX )
还有我的 Kbuild:
obj-m += drv.o
drv-objs := driver.o
如何为所有目标文件和相关内容指定输出目录?目前在源目录位置生成构建内容。而且我不想混合源文件和 obj 文件。有任何想法吗?