我喜欢保持Makefiles的灵活性和多功能性。我通常添加到make
命令的任务之一是tar
,例如以下指令执行此任务:
tar:
tar -cvf $(PROGNAME).tar $(SRCS) Makefile
我的问题是:如何使用CMake生成tar
等个性化命令?
我想看一些代码示例
对于完整功能,创建项目组件并将其用作参数将非常有用
( Exempligratia :仅归档头文件或某些特定库)。
提前感谢您的回答!
答案 0 :(得分:2)
tar示例的字面翻译将是:
ADD_CUSTOM_TARGET(tar
tar -cvf ${CMAKE_CURRENT_BINARY_DIR}/${PROGNAME}.tar ${SRCS} Makefile
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
这会添加一个新的目标“tar”,它始终在作为命令行目标请求时执行给定命令,即每当您运行make tar
时,它将创建一个新的tar文件。 WORKING_DIRECTORY
参数将确保源文件来自源目录,而CMAKE_CURRENT_BINARY_DIR确保输出进入当前构建目录。
稍微好一点的迭代就是用tar
替换${CMAKE_COMMAND} -E tar
,因为这不依赖于命令行tar
程序可用。因此,当您运行make tar
:
SET(HEADER_FILES my.h another.h)
SET(PROGNAME myprog)
ADD_CUSTOM_TARGET(tar ${CMAKE_COMMAND} -E tar -czvf
${CMAKE_CURRENT_BINARY_DIR}/${PROGNAME}.tar.gz ${HEADER_FILES}
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
更好的迭代是使用CPack功能来创建源文件或二进制tar文件,但这样做的工作要多得多,也可能不是你需要的。