我将一些自定义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文件(例如,moc_example.cpp
)并手动调整调用CL.exe
以编译moc_example.cpp
而不是GeneratedFiles\Debug\moc_example.cpp
,文件建立。
我使用的是VS 2017版本15.7.1,CL是版本19.00.24215.1 for x64,我会用任何其他细节更新问题可能有用,只需在评论中添加ask。
所以...为什么编译器告诉我那些文件不存在?
答案 0 :(得分:3)
我终于解决了在新目录中重建目录结构的问题。显然,使用WSL的git检查Windows下的存储库会破坏文件系统中的某些东西,这种方式在资源管理器或Ubuntu的命令行中是不可见的,但这会破坏编译器(和Visual Studio的智能感知)。
使用Git for Windows检出存储库似乎可以避免导致同样的问题。