第一次成功生成项目后,我修改了子项目中的源代码并重建了项目。操作失败,并显示“ make:***无目标。停止。”
我必须清理cmake缓存才能成功重建。有什么方法可以直接重新生成目标?
这是我的代码:
# CMakeList.txt: 顶层 CMake 项目文件,在此处执行全局配置
# 并包含子项目。
#
cmake_minimum_required (VERSION 3.8)
project ("LED")
# 包含子项目。
# add_subdirectory ("test_led")
add_subdirectory("tcp")
#Linux支持头文件
include_directories("/usr/src/linux-2.6.24.4/include")
include_directories("/usr/src/linux-2.6.24.4/arch")
set(KERNEL_DIR "/usr/src/linux-2.6.24.4")
function(compile_module obj)
set(TARGET_NAME ${obj})
add_custom_target(${TARGET_NAME} ALL cp -f ${CMAKE_CURRENT_SOURCE_DIR}/*.c ${CMAKE_CURRENT_BINARY_DIR}/
COMMAND echo "compiling module ${obj}.ko..."
)
list(LENGTH ARGN argn_len)
set(i 0)
set(depend_objlist "")
while( i LESS ${argn_len})
list(GET ARGN ${i} argn_value)
set(depend_objlist "${depend_objlist} ${argn_value}.o")
math(EXPR i "${i} + 1")
endwhile()
add_custom_command(TARGET ${TARGET_NAME}
POST_BUILD
COMMAND echo "obj-m := ${obj}.o" > ${CMAKE_CURRENT_BINARY_DIR}/Makefile
COMMAND echo "${obj}-objs:=${depend_objlist}" >>${CMAKE_CURRENT_BINARY_DIR}/Makefile
COMMAND echo ".PHONY: modules" >>${CMAKE_CURRENT_BINARY_DIR}/Makefile
COMMAND make -C ${KERNEL_DIR} M=${CMAKE_CURRENT_BINARY_DIR} modules
COMMAND rm -rf *.o *~ core .depend .*.cmd *.mod.c .tmp_versions
)
endfunction()
compile_module(s3c2410-dc-motor)
这是我的错误:
开始将文件复制到远程计算机。
[rsync] rsync -t --delete --delete-excluded -v -r --exclude=.vs --exclude=.git --exclude=out "." rsync://root@localhost:11556/temp
[rsync] sending incremental file list
[rsync]
[rsync] sent 445 bytes received 14 bytes 102.00 bytes/sec
[rsync] total size is 41,451 speedup is 90.31
已完成复制文件(运行时间 00h:00m:07s:879ms)。
cd $HOME/EmbeddedLinux/out/build/Linux-Release;/usr/bin/cmake --build "$HOME/EmbeddedLinux/out/build/Linux-Release" ;
make: *** No targets. Stop.
生成失败。