CMake将生成文件放入源目录
我对CMake很陌生。一位朋友为我自己编写的项目写了一个简单的CMakeLists.txt。我正在使用svn,刚刚将同一台机器上的旧版本签出到另一个文件夹中。现在,在原始源目录(CMakeLists.txt所在的位置)中,我创建了目录“build”,并将cd放入其中,暂时运行代码CMake将生成文件放入源目录,cmake,Cmake,我对CMake很陌生。一位朋友为我自己编写的项目写了一个简单的CMakeLists.txt。我正在使用svn,刚刚将同一台机器上的旧版本签出到另一个文件夹中。现在,在原始源目录(CMakeLists.txt所在的位置)中,我创建了目录“build”,并将cd放入其中,暂时运行代码 cmake -DCMAKE_BUILD_TYPE=Debug .. 这很好地将所有文件放在build目录中 -- Build files have been written to: ~/MixedFEMultigri
cmake -DCMAKE_BUILD_TYPE=Debug ..
这很好地将所有文件放在build目录中
-- Build files have been written to: ~/MixedFEMultigrid/build
cd ~
mkdir MixedFEMultigrid
cd MixedFEMultigrid
svn co <repository>
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Debug ..
现在,当我签出到另一个目录时,在该目录中创建另一个“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")
根据Escraford的评论,我正在更新以显示我在命令行上的操作
cd ~
mkdir oldCode
cd oldCode
svn co <repository>
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Debug ..
cd~
mkdir旧代码
cd旧码
svn公司
mkdir构建
光盘制作
cmake-DCMAKE\u BUILD\u TYPE=Debug。。
然后将生成文件放入目录“oldCode”而不是“build”目录。另一方面,下面的代码将生成文件放入“build”目录中
-- Build files have been written to: ~/MixedFEMultigrid/build
cd ~
mkdir MixedFEMultigrid
cd MixedFEMultigrid
svn co <repository>
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Debug ..
cd~
mkdir混合多重网格
cd混合多重网格
svn公司
mkdir构建
光盘制作
cmake-DCMAKE\u BUILD\u 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
在运行cmake之前,您是否已将cd刻录到新项目中的生成目录?告诉我们你在命令行上输入的内容。是的,我输入了。否则它就不会找到CMakeLists.txt文件。我已经更新了帖子,加入了我运行的shell命令,我使用了你的CMakeLists.txt(修改为只有一个源文件以便于复制),以及dir a mkdir build;光盘制作;cmake-DCMAKE\u BUILD\u TYPE=Debug..-它按预期工作,将生成文件置于“生成”下。也许svn里有什么额外的东西?你的问题中列出的每件事都应该按照你期望的方式进行。谢谢你试过这个。我已经有了更多的发挥,并发现了什么是错误的。我无意中从源目录运行了cmake,该目录创建了一个CMAKECHACHE.txt文件,源目录作为构建目录。当我创建一个构建目录时,它仍然被读取,所以构建文件仍然被放在源目录中。你的评论非常有用,谢谢你让我抓狂,就是这样,如果有一个旧的cmakecache可以覆盖你想要它做的事情。