在谷歌上快速搜索这个问题表明它很常见,我只是无法在我的案例中找出解决方案。
我直接从 wxWidgets 网站直接安装了适用于 Windows 的 wxWidgets 2.8.8。
每当我尝试编译任何内容(例如“wxWidgets 的第一个程序”中描述的示例应用程序 - http://zetcode.com/tutorials/wxwidgetstutorial/firstprograms/)我得到:
wx/setup.h:没有这样的文件或目录
我已将 C:\wxWidgets-2.8.8\include 和 C:\wxWidgets-2.8.8\include\wx 包含在我的编译器搜索列表中。
它应该很简单 - 但事实并非如此! :(
如果我尝试使用与 wxWidgets 集成的 IDE(例如 Code::Blocks),也会发生同样的事情 - 而且我本以为这会解决问题......
所以,请帮忙...为什么找不到 setup.h?
当您“安装”wxMSW 安装程序时,wxWidgets 并未内置到可用库中。这是因为有太多可配置的元素,这正是您引用的 setup.h 的用途。
如果您只想尽快使用默认选项构建它并继续,请按以下步骤操作:
启动“Visual Studio 命令提示符”。您可以在开始菜单的“Microsoft Visual Studio -> Visual Studio Tools”下找到它。
更改为文件夹:[WXWIN root] uild\msw
构建默认调试配置:
nmake -f makefile.vc BUILD=debug
构建默认发布配置:
nmake -f makefile.vc BUILD=release
确保 DLL 位于您的路径中。它们可以在 [WXWIN root]\lib c_dll
在上面提到的 DLL 文件夹下,您将找到每个构建变体的子文件夹(上面的说明做了两个,调试和发布。)在每个变体文件夹中,您将找到一个包含“setup.h”文件的“wx”文件夹。您将看到每个构建变体的 setup.h 文件实际上是不同的。这些是您需要添加到项目构建配置包含路径中的文件夹,每个构建变体一个。因此,例如,您需要添加 [ WXWIN root]\lib c_dll\mswud 到调试版本的包含路径,[WXWIN root]\lib c_dll\mswu 到发布版本。
可以构建许多其他变体组合:静态库、整体单个库、非 Unicode 等。有关更广泛的说明,请参阅 [WXWIN root]\docs\msw\install.txt。
构建 wxWidgets 时,它会为构建的每个构建配置动态创建一个 setup.h 文件。生成的 setup.h 文件存储在 lib 文件夹下的文件夹中,例如(Windows 上的 Visual Studio):
c:\wxWidgets-2.9.2\lib\vc_lib\mswu
要成功构建基于wxWidgets的项目,项目中的每个构建配置都必须设置自己的附加包含目录,该目录指向lib下相应的wxWidgets构建文件夹,例如上面列出的那个。
此外,项目中所有构建配置通用的附加包含目录必须设置为指向 wxWidget 的主包含文件夹。该文件夹通常设置在可在任何项目中使用的用户属性表中。例如:
c:\wxWidgets-2.9.2\include
为了链接,所有构建配置通用的附加库目录被设置为指向 wxWidgets lib 文件夹。例如:
c:\wxWidgets-2.9.2\lib\vc_lib
然后,针对每个构建配置,设置附加依赖项以包含相应 wxWidgets 库的库。例如,对于 Unicode,调试构建(u = Unicode,d = 调试):
wxbase29ud.lib
然后,要在项目中使用 wxWidgets,请首先包含生成的 setup.h 文件:
#include "wx/setup.h"
然后包含特定 wxWidgets 功能的标头。例如:
#include <wx/slider.h>
#include <wx/image.h>
#include <wx/control.h>
您可能需要构建 wxWidgets。 wxWidgets 构建过程中有一个构建后步骤,将相应的 setup.h 复制到 C:\wxWidgets_install_dir\include\wx 中。
为了使任何工作正常进行,您首先必须构建核心库(wx_vc#.sln 文件)。 然后你就可以处理剩下的东西了。
请记住,您需要 CppUnit 来编译测试用例。
是的,即使我在 Windows 上也遇到过这个问题。但这是最简单的事情。 (复制和粘贴)
您必须将该 setup.h 文件从
./wxWidgets/include/wx/msw/wx/setup.h
移动到 ./wxWidgets/include/wx
目录。
因此您的源代码可以将该文件用作
#include <wx/setup.h>
这个 setup.h 内部包含所有 wxwidgets UI 控件。