【发布时间】:2018-08-11 12:31:06
【问题描述】:
我想在我的项目中默认使用 CMake 构建我的文档 (doxygen)。我让 CMake 生成 Makefile。到目前为止,我知道这些方法:
1)
add_custom_target(doc ALL
COMMAND ${DOXYGEN_COMMAND})
2)
add_custom_command(
TARGET my-executable
POST_BUILD
COMMAND ${DOXYGEN_COMMAND})
我对第一种方法的问题是目标是在构建和安装期间构建both(即在运行make 时和在运行make install 时) .这是不行的。
第二种方法的问题在于它实际上并不正确:文档不必必须在可执行文件之后构建(事实上,它甚至可以并行完成)。此外,我现在无法仅构建可执行文件。
有没有办法创建此自定义命令/目标,使其仅在make(构建)期间运行,而不是在make install(安装)期间运行,但独立于其他可执行文件等目标?
基本上我需要一个“默认目标”。另外我真的很想避免递归执行 CMake 或直接执行。
【问题讨论】:
-
使用
add_custom_command(OUTPUT ...)定义生成文档的规则,使用add_custom_target(... ALL)定义依赖于命令输出的规则。这样,文档将只构建一次。 -
@arrowd:非默认自定义目标的问题在于其文件无法安装:(在 CMake 文档文件中,表示用于安装但不是由
make all生成,被称为未定义的行为)。但文档文件通常用于安装。
标签: cmake