将构建文件放入源目录中

时间:2014-06-05 21:04:55

标签: cmake

我是CMake的新手。一位朋友为我自己编写的项目写了一个简单的CMakeLists.txt。我正在使用svn,并在同一台机器上检查了一个旧版本到另一个文件夹。现在,在原始源目录(CMakeLists.txt所在的位置)中,我创建了目录' build',cd进入那里,暂时运行代码

cmake -DCMAKE_BUILD_TYPE=Debug ..

这很好地将所有文件放在构建目录中

-- Build files have been written to: ~/MixedFEMultigrid/build

现在当我结帐到另一个目录时,创建另一个' build'在那个目录中然后运行CMake命令我得到以下

-- Build files have been written to: ~/oldCode

其中oldCode实际上是父目录。我不知道为什么会这样。谁可以给我解释一下这个?完整的CMakeLists.txt文件如下所示,

cmake_minimum_required (VERSION 2.6)
project (MixedFEMultigrid)
FIND_PACKAGE(LAPACK REQUIRED)
set( SRC_FILES  multigrid.c 
  gridHandling.c
  interpolation.c
  linApprox.c
  params.c
  sparseMatrix.c
  testing.c
  richardsFunctions.c
  definitions.c
  newtonIteration.c
  )

#Adds the executable with all the dependencies
add_executable (multigrid ${SRC_FILES})

#Specifies the libraries to link to the target
TARGET_LINK_LIBRARIES(multigrid ${LAPACK_LIBRARIES} m)

# Update if necessary
set(CMAKE_C_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-long-long -pedantic -fstrict-aliasing -std=c99 -O3")

根据escrafford的评论,我正在更新以显示我在命令行上的操作。

cd ~
mkdir oldCode
cd oldCode
svn co <repository>
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Debug ..

然后将构建文件放入目录&#39; oldCode&#39;而不是&#39; build&#39;目录。另一方面,以下内容将构建文件放入&#39; build&#39;目录

cd ~
mkdir MixedFEMultigrid
cd MixedFEMultigrid
svn co <repository>
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Debug ..

1 个答案:

答案 0 :(得分:8)

来自源内cmake执行

请记住删除cmake缓存:

$ rm CMakeCache.txt
$ mkdir debug
$ cd debug
$ cmake -DCMAKE_BUILD_TYPE=Debug ..

鉴于cmake没有提供干净的目标,这还有另一个好处

$ cd ..
$ rm -rf debug

相当于make clean或更准确make distclean