写在前面:
由于时间的不足与学习的碎片化,写博客变得有些奢侈。
但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。
既然如此
不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录,记录笔者认为最通俗、最有帮助的资料,并尽量总结几句话指明本质,以便于日后搜索起来更加容易。
标题的结构如下:“类型”:“知识点”——“简短的解释”
部分内容由于保密协议无法上传。
点击此处进入学习日记的总目录
CMake:系统找不到指定的文件——解决问题Cmake Error at CMakeLists.txt:4 (project):
Running
'nmake' '-?'
failed with:
系统找不到指定的文件

原因:
vs版本不对
解决办法:
去CMake里修改使用的vs版本。
CMake:CMake指令——构建与编译CMakeList.txt后,进入它的根目录,在该目录的cmd中运行下面指令mkdir build
cd build
cmake ..
cmake --build .
cmake --install .
CMake:add_custom_command——仅学习其中的复制命令TARGET:指定命令运行的目标,即CopyTask;COMMAND:指定要在构建时执行的命令行; ADD_EXECUTABLE(${CMAKE_PROJECT_NAME} ${DIR_SRCS})
add_custom_target(CopyTask ALL DEPENDS ${CMAKE_PROJECT_NAME})
add_custom_command(TARGET CopyTask
POST_BUILD
COMMAND echo ${CMAKE_PROJECT_NAME}
COMMAND ${CMAKE_COMMAND} -E copy_directory ${PATH}/3rd ${PATH}/build/src/Debug
)
#将 CopyTask 这个 target 依赖在 生成exe 这个进程上
#使用POST_BUILD 方式达到 生成exe进程结束 即运行 CopyTask 操作。
#PRE_BUILD - 命令将会在其他依赖项执行前执行
#PRE_LINK - 命令将会在其他依赖项执行完后执行
#POST_BUILD - 命令将会在目标构建完后执行。
${CMAKE_COMMAND}是CMake的路径。-E使CMake运行命令而不是构建。copy_directory是复制目录下所有文件,copy是复制指定文件。copy,则是两个包含目录的文件)。链接:
【CMake】cmake的add_custom_command和add_custom_target指令
cmake整理:在编译时拷贝文件之add_custom_comand 和 add_custom_target
【CMake】cmake的add_custom_command和add_custom_target指令
CMake:add_custom_command不运行——解决问题CMake Error at CMakeLists.txt:26 (add_custom_command):
add_custom_command Wrong syntax. Unknown type of argument.
-- Configuring incomplete, errors occurred!
链接:
cmake之采坑(一)
CMake:set——设置变量CMake:add_custom_target——仅学习 依赖关系 和 默认执行ALL 和 DEPENDSALL:在声明target的时候,可以加上ALL,这个target就会加入all target中,默认进行执行了。DEPENDS:target之间可以有依赖关系,A依赖B(A depends on B),意味着A的build,需要基于B 已经build完成。DEPENDS B。add_custom_command有三种运行方式,PRE_BUILD 、 PRE_LINK 和 POST_BUILD。PRE_BUILD为例,是在什么之前,这时就需要add_custom_target的DEPENDS来确定。ADD_EXECUTABLE(${CMAKE_PROJECT_NAME} ${DIR_SRCS})
add_custom_target(CopyTask ALL DEPENDS ${CMAKE_PROJECT_NAME})
add_custom_command(TARGET CopyTask
POST_BUILD
COMMAND echo ${CMAKE_PROJECT_NAME}
COMMAND ${CMAKE_COMMAND} -E copy_directory ${PATH}/3rd ${PATH}/build/src/Debug
)
#将 CopyTask 这个 target 依赖在 生成exe 这个进程上
#使用POST_BUILD 方式达到 生成exe进程结束 即运行 CopyTask 操作。
链接:
CMake之add_custom_target
cmake(二十七)Cmake中target再理解
makefile中的target到底代表什么?
终于解决了,呜呜呜,今天的博客全部都是围着一个问题转——在CMake编译时将动态库复制到Debug文件夹中。
这个问题的解决方式倒是不难,要实现编译时复制文件的功能 ,只需要add_custom_command 和 add_custom_target两个命令,add_custom_target 来确定运行顺序,add_custom_command实现复制功能。
但对于我这个刚接触CMake两天的小白,属实有一种盲人摸象的感觉。我以为这两个函数功能是重复的,就在程序里要么有add_custom_targe,要么有add_custom_command,结果编译出来总是无法实现功能。
虽然博客里记载的链接不多,但其实今天一共看了这些:

真的是知识如海,难题如山。学习新知识就像在山雾中前行,每一步都包含着对自己的怀疑,希望我们能够不畏艰难,在翻越一座座山时,提高自己的解题效率。