我正在使用CMake,我想尝试制作它,所以我有一个子目录,而不是分散在我的项目或其根目录中的文件。
我的目录布局为project/cmake/CMakeLists.txt
和project/bin
以及project/source
,因此人们可以根据需要轻松删除CMake内容。我唯一的问题是可能有一种方法可以做到这一点,我不知道。目前它会生成一堆垃圾,包括project/cmake/bin/obtap.dir/home/jookia/Programming/obtap/source
文件夹。
cmake_minimum_required(VERSION 2.6)
project(obtap)
add_definitions(-g -Wall)
add_executable(../bin/obtap ../source/main.cpp)
它编译好,它输出正确的目录。但我的问题是这样的:
有没有办法删除project/cmake/bin
目录,并且可选地,有没有办法不拥有所有CMake的东西,而只是生成一个makefile,所以我有两个文件,CMakeLists.txt和Makefile?
答案 0 :(得分:5)
正如CMake FAQ中所指定的,生成的Makefile包含库和源代码的完整路径,因此没有简单的方法来分发由CMake生成的构建树。
答案 1 :(得分:1)
我相信你想要的应该是所谓的 out of source build ,这可以通过在专用目录中运行cmake在单独的目录中生成中间文件来实现,对于您的情况,您可以尝试以下命令:
mkdir -p project/bld/
cd project/bld/
cmake project/cmake
现在你获得了在 project / bld 目录中生成的所有CMake内容,并且只要你想删除所有这些内容,就运行:
rm -fr project/bld/
您甚至可以通过设置不同的构建树来获取几个不同的配置文件。
如果要控制生成的可执行输出路径,使其不会隐藏在深层嵌套的cmake中间二叉树中,则可能会出现一个问题。答案是您可以设置变量 CMAKE_CURRENT_BINARY_DIR 来自定义可执行输出绝对路径,或者只使用cmake -E
和add_custom_command
命令复制可执行文件。