防止在根目录中运行cmake

时间:2014-07-02 09:43:59

标签: makefile cmake

有时我会忘记我在build文件夹中,并在根目录中运行该命令。好吧,也许你们中的一些人经历过这会在整个文件层次结构中造成混乱,因为你必须删除CMakeFiles /文件夹,配置文件以及与CPack和CTest相关的文件。有没有办法可以在根目录下的Makefile中添加一些东西来防止我意外地运行cmake?我试图添加目标'cmake',但这不起作用。

AA

更新

我在here发现了同样的问题。我最终采用了在该页面中建议的.bashrc文件中添加一个函数:

function cmake() {
  # Don't invoke cmake from the top-of-tree
  if [ -e "CMakeLists.txt" ]
  then
    echo "CMakeLists.txt file present, cowardly refusing to invoke cmake..."
  else
    /usr/bin/cmake $*
  fi
}

1 个答案:

答案 0 :(得分:5)

如果源和二进制目录相同,您可以签入CMakeLists.txt。把这样的东西作为CMakeLists.txt中的第一件事:

if (CMAKE_BINARY_DIR STREQUAL CMAKE_SOURCE_DIR)
    message(FATAL_ERROR "Source and build directories cannot be the same.")
endif()