我是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 ..
然后将构建文件放入目录“ oldCode”而不是“ build”目录。另一方面,以下内容将构建文件放入“ build”目录中
cd ~
mkdir MixedFEMultigrid
cd MixedFEMultigrid
svn co <repository>
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Debug ..
这来自于源内cmake执行
记住要删除cmake缓存:
$ rm CMakeCache.txt
$ mkdir debug
$ cd debug
$ cmake -DCMAKE_BUILD_TYPE=Debug ..
鉴于cmake不能提供干净的目标,这还有另一个好处
$ cd ..
$ rm -rf debug
等于make clean
或更精确地make distclean
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句