Here is my cmake to build linux kernle hello world module.
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 )
And my Kbuild :
obj-m += drv.o
drv-objs := driver.o
How can I specify the output directory for all object files and related stuff? For the moment build stuff is generated at the source directory location. And I'd like not to mix source and obj files. Any ideas?