CMakeLists.txt 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. set(TARGET_NAME "virtualcam")
  2. # 设置内核源代码路径
  3. execute_process(
  4. COMMAND uname -r
  5. OUTPUT_VARIABLE KERNEL_VERSION
  6. OUTPUT_STRIP_TRAILING_WHITESPACE
  7. )
  8. message(STATUS "Current kernel version: ${KERNEL_VERSION}")
  9. set(KERNEL_DIR /usr/src/linux-headers-${KERNEL_VERSION})
  10. message(STATUS "KERNEL_DIR: ${KERNEL_DIR}")
  11. # 定义编译函数/方法,驱动编译过程主要在这个函数进行
  12. function(compile_module obj)
  13. #set(TARGET_NAME ${obj})
  14. # 添加目标,obj即为模块名称
  15. add_custom_target(${TARGET_NAME} ALL cp -f ${CMAKE_CURRENT_SOURCE_DIR}/*.c ${CMAKE_CURRENT_BINARY_DIR}/
  16. COMMAND cp -f ${CMAKE_CURRENT_SOURCE_DIR}/*.h ${CMAKE_CURRENT_BINARY_DIR}/
  17. COMMAND echo "compiling module ${obj}.ko..."
  18. )
  19. # 设置依赖
  20. set(depend_objlist "v4l2loopback.o")
  21. # 设置编译命令
  22. add_custom_command(TARGET ${TARGET_NAME}
  23. POST_BUILD
  24. COMMAND echo "obj-m := ${obj}.o" > ${CMAKE_CURRENT_BINARY_DIR}/Makefile
  25. COMMAND echo "${obj}-objs:=${depend_objlist}" >>${CMAKE_CURRENT_BINARY_DIR}/Makefile
  26. COMMAND make -C ${KERNEL_DIR} M=${CMAKE_CURRENT_BINARY_DIR} modules
  27. )
  28. endfunction()
  29. # 调用编译函数
  30. compile_module(virtualcam)
  31. message(STATUS "TARGET_NAME: ${TARGET_NAME}")
  32. message(STATUS "CMAKE_CURRENT_BINARY_DIR: ${CMAKE_CURRENT_BINARY_DIR}")
  33. #install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${TARGET_NAME}.ko
  34. # DESTINATION "${RVC_RUNTIME_PATH}")