linux - 为什么 cmake 在我的构建目录中创建 'source' 目录?

标签 linux compilation makefile cmake

我对 cmake 感到有点沮丧,因为我正在尝试学习它并正确使用它。

这是我的设置:

我有一个名为 ~/project 的目录。在这个目录中,我有:

  • 构建目录
  • 目录
  • 包含目录。
  • CMakeLists.txt 文件。

CMakeLists.txt文件的内容是:

cmake_minimum_required(VERSION 2.8)
project(myProject)
subdirs(source)

我在~/project/source中还有另一个CMakeLists.txt,其内容是:

cmake_minimum_required(VERSION 2.8)
include_directories("~/project/includes")
add_executable(exec entry.cpp)

现在,我进入空的构建目录,然后执行cmake ..。这很好用。不过,我随后看到创建了一个“源”目录,如图所示 here

为什么要创建这个?我不知道发生了什么事。据我了解,它不应该这样做,它应该给我在这里看到的所有内容,除了“源”目录之外。

谢谢。

最佳答案

在构建目录中,CMake 重新创建项目的整个目录结构。合理的做法是,保持项目结构。想象一个更大的项目,其中有多个级别的子文件夹和源代码、库和测试以有意义的方式分散。要运行测试,您需要遵循测试源所在的结构,即位于构建目录而不是源目录中。

作为您的项目,至少就 CMake 所知,只有 source 子目录,仅创建此文件夹。

如果您确实只有源项目,我不确定将 CMake 项目放在 source 中是否会更好。

关于linux - 为什么 cmake 在我的构建目录中创建 'source' 目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24725580/

相关文章:

c++ - 在 Linux 等上透明访问 Samba 共享上的文件。使用 C++ IO 流

php - 如何在Linux中设置权限/var/www以允许PHP-Apache自动覆盖

linux - python整数的numpy默认dtype

无法编译 libcgcrypt-1.6.1 - 看不到 libgpg-错误

c++ - 仅在打开编译器优化的情况下,某些地方的缓冲区溢出

Rscript 在容器中找不到已安装的包

c - 链接器错误: undefined reference to shared object

c - 如何为 android jni 编译 Fluidsynth

linux - 为 ARM 架构构建 libsndfile 库

css - 如何在Bootstrap的make中获取更详细的错误信息?