c++ - 现有文件和正确路径出现“无法打开源文件”错误
问题描述
我正在构建一些自定义 Qt 组件作为静态库,但我无法通过编译阶段。我的项目结构如下:
Root:
- .h and . cpp files of the custom Qt components
- GeneratedFiles/Debug/ <-- here the MOC compiler puts the generated moc_*.cpp files ("Debug" is automatically deducted from the build configuration, so it's Release for release builds)
这是一个非常标准的文件夹设置,但无论出于何种原因,编译器都无法仅找到 moc 文件。根文件夹中的任何内容都可以正常构建,但找不到 moc 文件。请注意,moc_ 文件生成得很好,并且存在于它们应该存在的位置,并且具有正确的内容。问题似乎出在路径的评估上GeneratedFiles\Debug\moc_whatever.cpp
。
有趣的是,如果我moc_example.cpp
在根文件夹中移动一个 moc 文件(例如, )并手动调整调用CL.exe
compilemoc_example.cpp
而不是GeneratedFiles\Debug\moc_example.cpp
,该文件将被构建。
我正在使用 VS 2017 版本 15.7.1,CL 是 x64 的版本 19.00.24215.1,我将使用任何其他可能有用的细节更新问题,只需在评论中添加询问即可。
那么...为什么编译器告诉我这些文件不存在?
解决方案
我终于解决了这个在新目录中重建目录结构的问题。显然,使用 WSL 的 git 在 Windows 下检查存储库会破坏文件系统中的某些内容,这种方式在资源管理器或 Ubuntu 的命令行中是不可见的,但这会破坏编译器(以及 Visual Studio 的智能感知)。
使用 Git for Windows 签出存储库似乎可以避免导致同样的问题。
推荐阅读
- angular - aggrid 服务器端分页“当网格位于绘图行的中间时,无法让网格绘制行”
- loops - 如何循环播放音频列表?
- python - Python:找出 for 循环中的哪个元素导致了问题
- sql - 选择大于同一列中最后一个最大值的行?
- powershell - 如何使用命令 Select-String grep 两个字符串,使用正则表达式 `(str1|str2)`
- android - 以编程方式卸载应用程序 Android 10
- python - 如何在从龙卷风流式传输视频时减少阻塞
- r - 替换单引号而不更改撇号
- javascript - 手动触发 jquery keyup 事件传递错误的键码
- linux - 如何在 Linux 上动态设置窗口的可聚焦属性?