CMake以一种dsl的方式述了一个项目的构建过程最终输出makefile文件
1.add_custom_command添加自定义命令
场景:使用自定义命令多个步骤编译产生静态库
注意点: add_custom_command的输出必须被某个目标依赖才会执行,注意将 add_custom_command的output加入到目标任务的依赖中如add_library,多个add_custom_command前一个的输出加入后一个的依赖中
2.target_link_libraries链接自定义命令产生的库
场景:上文中自定义命令编译产生的一个lib库(libxxx.a),使用target_link_libraries链接
注意点:直接使用target_link_libraries(xxx),则xxx被当作一个稳定的外部库被链接,因此如果再次编译使用make -j,则xxx若改动不会被链接到目标中,应该直接以add_custom_command输出目标的形式添加如输出目标为${lib},则直接target_link_libraries(${lib})