如何为仅头文件库创建缺少的“clean”目标?

时间:2015-10-23 12:58:35

标签: cmake

在我的仅限标题的库中,我有以下CMakeLists.txt文件:

cmake_minimum_required(VERSION 2.8.11)

project(Math)
set(PROJECT_VERSION 0.1)

# Install prefix
if(NOT DEFINED CMAKE_INSTALL_PREFIX)
    set(CMAKE_INSTALL_PREFIX /usr/local)
endif()
message("++ Installation prefix set to \"${CMAKE_INSTALL_PREFIX}\"")

configure_file("${CMAKE_SOURCE_DIR}/pkg-config.pc.cmake"
               "${CMAKE_BINARY_DIR}/${PROJECT_NAME}.pc")

install(DIRECTORY include/ DESTINATION "${CMAKE_INSTALL_PREFIX}/include/Math")
install(FILES       "${CMAKE_BINARY_DIR}/${PROJECT_NAME}.pc"
        DESTINATION "${CMAKE_INSTALL_PREFIX}/share/pkgconfig/")

它正常工作,但似乎当我说make clean(我希望它是一个无操作,但make应该返回0)时,我得到了

make[1]: *** No rule to make target `clean'.  Stop.
make: *** [clean] Error 2

我发现构建目录中的clean中确实存在Makefile目标,但它在clean中要求CMakeFiles/Makefile2目标,而不是存在。

如果我将以下内容添加到CMakeLists.txt

,我发现已创建目标
add_custom_target(clean)

但是我对任何make调用都会收到一些恼人的警告:

Makefile:150: warning: overriding commands for target `clean'
Makefile:123: warning: ignoring old commands for target `clean'

即。由于某种原因,Makefile获得了clean目标的两个实例。

如何干净地创建一个无操作clean目标,而不是收到任何警告?

1 个答案:

答案 0 :(得分:1)

添加

add_custom_target(dummy_target)

对我有用:make clean不会发出任何错误。

由于ALL未用于自定义目标,因此在make调用期间不会显示。