这问题提得非常不清楚!提问者问如何在 make 时禁用 wxWidgets 的异常,但并没有考虑到以下几个方面:
wxWidgets 的编译配置与系统默认库的关系:
如果系统的 wxWidgets 库已经被编译成 libwx_gtk3u_core.so,而且该库在编译时启用了异常处理(即 wxUSE_EXCEPTIONS=1),那么你 无法通过 FreeFileSync 或其他项目的 make 操作来改变该库的行为。因为 libwx_gtk3u_core.so 已经包含了异常处理代码。
需要明确的是,wxUSE_EXCEPTIONS 是在编译 wxWidgets 时设置的,而不是在项目的 make 阶段设置的。
如何禁用异常的正确方法:
修改 wxWidgets 编译配置:如果系统中已有的 wxWidgets 库启用了异常处理,你 必须重新编译 wxWidgets,并确保禁用异常处理。
对于 wxWidgets,通常会使用 ./configure 或 CMake 来配置编译选项,可以通过以下方式禁用异常处理:
bash
复制代码
./configure --disable-exceptions
这样你会重新编译一个不使用异常的 wxWidgets 库,之后 FreeFileSync 就可以链接到这个库而不会遇到异常相关的编译问题。
编译 wxWidgets 时,设置 wxUSE_EXCEPTIONS=0: 如果你是手动编辑 wxWidgets 的配置文件,确保在 config.h 或类似文件中,将 wxUSE_EXCEPTIONS 设置为 0。这意味着 wxWidgets 的代码会在编译时完全禁用异常。
cpp
复制代码
#define wxUSE_EXCEPTIONS 0
结论:
无法在 FreeFileSync 的 make 阶段禁用 wxWidgets 的异常。问题的关键在于,libwx_gtk3u_core.so 已经编译好了,包含了异常处理逻辑,而 FreeFileSync 编译时只会使用这个库。
解决方法是重新编译 wxWidgets,确保它在编译时禁用了异常
【 在 easior 的大作中提到: 】
: FreeFileSync 13.1 在 Fedora 41 上编译
: 看了其他rpm系统的 spec,都是老版本,需要不同的补丁
:
--
FROM 124.114.151.*