18

对这个问题的快速谷歌搜索表明它很常见,我只是无法在我的情况下找出解决方案。

我直接从 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?

4

4 回答 4

24

当您“安装” wxMSW 安装程序时,wxWidgets 没有内置到可用的库中。这是因为有太多可配置的元素,而这正是您所指的 setup.h 的用途。

如果您只想尽快使用默认选项构建它并继续前进,那么方法如下:

  1. 启动“Visual Studio 命令提示符”。您可以在“Microsoft Visual Studio -> Visual Studio Tools”下的开始菜单中找到它。

  2. 切换到文件夹:[WXWIN root]\build\msw

  3. 构建默认调试配置:nmake -f makefile.vc BUILD=debug

  4. 构建默认发布配置:nmake -f makefile.vc BUILD=release

  5. 确保 DLL 在您的 PATH 中。它们会在 [WXWIN root]\lib\vc_dll 中找到

  6. 在上面提到的 DLL 文件夹下,您会找到每个构建变体的子文件夹(上面的说明分为两个,调试和发布。)在每个变体文件夹中,您会找到一个包含“setup.h”文件的“wx”文件夹。你'会看到 setup.h 文件对于每个构建变体实际上是不同的。这些是您需要添加到项目构建配置的文件夹,包括路径,每个构建变体一个。因此,例如,您将添加 [WXWIN root ]\lib\vc_dll\mswud 到您的调试版本的包含路径,[WXWIN root]\lib\vc_dll\mswu 用于您的发布版本。

  7. 可以构建许多其他变体组合:静态库、单一库、非 Unicode 等。请参阅 [WXWIN root]\docs\msw\install.txt 了解更多详细说明。

于 2008-10-16T15:55:02.750 回答
7

在构建 wxWidgets 时,它会为每个构建的构建配置动态创建一个 setup.h 文件。生成的 setup.h 文件存储在 lib 文件夹下的文件夹中,例如(Windows 上的 Visual Studio):

c:\wxWidgets-2.9.2\lib\vc_lib\mswu

要成功构建基于 wxWidgets 的项目,项目中的每个构建配置都必须设置自己的 Additional Include 目录,该目录指向 lib 下对应的 wxWidgets 构建文件夹,例如上面列出的那个。

此外,必须将项目中所有构建配置通用的附加包含目录设置为指向 wxWidget 的主包含文件夹。此文件夹通常设置在可用于任何项目的用户属性表中。例如:

c:\wxWidgets-2.9.2\include

对于链接,所有构建配置通用的附加库目录设置为指向 wxWidgets lib 文件夹。例如:

c:\wxWidgets-2.9.2\lib\vc_lib

然后,特定于每个构建配置,附加依赖项被设置为包含相应 wxWidgets 库的库。例如,对于 Unicode,Debug 构建(u = Unicode,d = Debug):

wxbase29ud.lib

然后,要在项目中使用 wxWidgets,首先要包含生成的 setup.h 文件:

#include "wx/setup.h"

然后包含特定 wxWidgets 功能的标题。例如:

#include <wx/slider.h>
#include <wx/image.h>
#include <wx/control.h>
于 2011-10-03T21:16:44.453 回答
2

您可能需要构建 wxWidgets。wxWidgets 构建过程中有一个构建后步骤,它将适当的 setup.h 复制到 C:\wxWidgets_install_dir\include\wx。

于 2008-09-25T15:46:49.287 回答
0

为了让任何东西工作,您首先必须构建核心库(wx_vc#.sln 文件)。然后你可以处理剩下的东西。

请记住,您需要CppUnit来编译测试用例。

于 2016-07-01T13:09:52.987 回答