【问题标题】:CMake creates file instead of directoryCMake 创建文件而不是目录
【发布时间】:2021-11-22 09:18:13
【问题描述】:

今天我在 Windows 机器上运行 CMake 配置时遇到了一个奇怪的行为。

在大多数机器上,项目的 CMake 配置运行顺利,所有文件和目录均已正确创建和配置,并且可以按预期构建代码。 但是有一台机器,CMake 的 Generate 步骤为一个目录(不是 CMake 特定目录,而是反映源结构的目录)创建了一个空文件,而不是一个目录。因此构建停滞在那里,因为它无法创建其余必要的构建文件。

我们可以通过删除文件并创建所需目录来手动解决此问题。之后,其余的配置/构建再次运行。

有没有其他人遇到过这种问题?或者知道为什么会发生这种情况?

【问题讨论】:

  • 请显示(添加到问题帖子)您正在尝试构建的示例项目,以及配置过程的输出(当您运行时cmake)。
  • 请提供足够的代码,以便其他人更好地理解或重现问题。

标签: windows cmake


【解决方案1】:

抱歉,这个问题相当不完整。同时我找到了罪魁祸首:

有一个configure_file 将文件复制到其中一个构建目录中;最后丢失的那个。实际上,问题在于,它是 a) Windows 系统,它在从批处理文件创建目录时会出现问题;b) configure_file 是在之前完成的,相应的子目录已添加到cmake-构建。所以是这样的:

configure_file(${CMAKE_CURRENT_SOURCE_DIR}/foo.in ${CMAKE_CURRENT_BINARY_DIR}/bar/foo.txt)
add_subdirectory(bar)

问题可以通过以下方式解决:

  • 预先创建目录(嗯...)
  • configure_file() 之前执行add_subdirectory()
  • 使用install() 而不是configure_file()(我使用了它,因为它对我的情况有意义)

【讨论】:

  • 很高兴你发现了你的问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-12
  • 2011-07-26
  • 1970-01-01
  • 1970-01-01
  • 2021-02-19
  • 2018-06-04
  • 2012-12-06
相关资源
最近更新 更多