在我的仅限标题的库中,我有以下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
目标,而不是收到任何警告?
答案 0 :(得分:1)
添加
add_custom_target(dummy_target)
对我有用:make clean
不会发出任何错误。
由于ALL
未用于自定义目标,因此在make
调用期间不会显示。