2

我在使用 CMake 将源文件和头文件添加到我的 Eclipse CDT 项目中时遇到问题。在我的测试项目(生成和构建良好)中,我有以下 CMakeLists.txt:

cmake_minimum_required(VERSION 2.6)

project(WINCA)

file(GLOB WINCA_SRC_BASE "${WINCA_SOURCE_DIR}/src/*.cpp")
file(GLOB WINCA_SRC_HPP_BASE "${WINCA_SOURCE_DIR}/inc/*.hpp")

add_library(WINCABase ${WINCA_SRC_BASE} ${WINCA_SRC_HPP_BASE})

这工作正常,但生成的 Eclipse 项目文件不包含指向源文件或头文件的链接。有谁知道为什么?我必须使用任何其他 cmake 命令将文件实际添加到项目中吗?

4

3 回答 3

5

我意识到你已经有一段时间没有发布这个了,但是fwiw,它适用于我为 Eclipse/Ganymede 生成的 CMake 2.6 或 2.7(主干)版本。我要做的是第一次运行

cmake -G "Eclipse CDT4 - Unix Makefiles" /path/to/src

它生成 Eclipse 项目文件以及 makefile,然后在 Eclipse 中“导入项目”。

工作精美...

狡猾

于 2009-06-14T01:52:55.297 回答
3

我使用 CMake 2.4,而不是 2.6,但在 2.4 中,他们特别警告不要使用 GLOB 来查找要构建的文件。

这是因为它会注意到是否添加或删除了新文件,因此它无法找出依赖关系。

如果您必须将文件显式添加到 CMakeLists.txt 中,则此文件将比 makefile 和缓存文件更新。所以 CMake 会知道重新生成它们。

如果文件是用 glob 添加的,CMake 不知道随着您添加新文件而发生的更改,因此 CMake 不知道它必须重新生成 makefile 等。这对于常规 makefile 和 Visual Studio 项目是相同的。

除非 CMake 2.6 文档明确表示可以添加这样的文件,否则我会避免使用它。在 cmake 中管理源文件并不难。您多久添加一次新文件?

于 2009-05-20T16:41:15.337 回答
1

我遇到的问题是我做了一个“源内”构建而不是“源外”构建。现在它工作正常,实际上维基上有很多关于此的信息,但不知何故我误解了它。

于 2009-06-15T11:26:04.517 回答