防止在根目录中运行cmake

aar*_*gon 2 makefile cmake

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

AA

UPDATE

我在这里发现了同样的问题.我最终采用了在我的.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
}
Run Code Online (Sandbox Code Playgroud)

Jes*_*erE 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()
Run Code Online (Sandbox Code Playgroud)