在 Windows 10 上使用 CodeBlocks 和 CMake 构建 Qt 应用程序 MARSYAS
Building Qt application MARSYAS with CodeBlocks & CMake on Windows 10
我一直在尝试构建 MARSYAS application on Windows 10 with these instructions。但是,我选择的 IDE 通常是 CodeBlocks 而不是 Visual Studio,我想用它来代替它。我还使用 MinGW 而不是 Microsoft 编译器。我也想用它作为构建系统。
当我在Marsyas 源代码目录中使用cmake-gui 时,我可以使用MinGW 生成文件配置和生成一个CodeBlocks 项目。在此过程中,我必须添加带有 Qt 源代码的条目 CMAKE_PREFIX_PATH。现在,问题就在这里。我可以在 Qt.11.1 目录中选择多个运行时的源代码。但是无论我设置为CMAKE_PREFIX_PATH(mingw53_32、msvc2015等),生成的CodeBlocks项目内部的构建总是失败,并出现以下错误:
marsyas-release-0.5\src\marsyas\marsystems\AudioSource.h|74|error: 'mutex' in namespace 'std' does not name a type|
marsyas-release-0.5\src\marsyas\marsystems\AudioSource.h|75|error: 'condition_variable' in namespace 'std' does not name a type|
marsyas-release-0.5\src\marsyas\marsystems\AudioSink.h|70|error: 'mutex' in namespace 'std' does not name a type|
marsyas-release-0.5\src\marsyas\marsystems\AudioSink.h|71|error: 'condition_variable' in namespace 'std' does not name a type|
我已经尝试应用 this Whosebug question 中的建议:在 MinGW 安装管理器中安装 mingw32-pthreads- 包并安装 MinGW-W64,但到目前为止无济于事。
有没有人可以给我一些建议?将不胜感激!
提前致谢,
约书亚
我已经解决了我的问题。您不能使用带有 MinGW 编译器(甚至不是 MinGW-W64)的 C++ 11 线程 API 编译 C++ 项目,因为它们依赖于 UNIX pthread 库来提供 API 的运行时功能。但是,不幸的是,为 Windows 制作的 pthread 包似乎存在很多问题。无论我做什么,我都无法使用 CodeBlocks 成功构建。
我使用 Microsoft Visual Studio 构建项目,确保 select 工具栏中的 Release 目标并在 Build > Configuration Manager 中启用安装目标。现在,我使用 Microsoft Visual C++ 运行时构建了 MARSYAS。我希望将来使用 GNU 运行时在 Windows 上构建它会起作用,但目前我看不到其他选项...
我一直在尝试构建 MARSYAS application on Windows 10 with these instructions。但是,我选择的 IDE 通常是 CodeBlocks 而不是 Visual Studio,我想用它来代替它。我还使用 MinGW 而不是 Microsoft 编译器。我也想用它作为构建系统。
当我在Marsyas 源代码目录中使用cmake-gui 时,我可以使用MinGW 生成文件配置和生成一个CodeBlocks 项目。在此过程中,我必须添加带有 Qt 源代码的条目 CMAKE_PREFIX_PATH。现在,问题就在这里。我可以在 Qt.11.1 目录中选择多个运行时的源代码。但是无论我设置为CMAKE_PREFIX_PATH(mingw53_32、msvc2015等),生成的CodeBlocks项目内部的构建总是失败,并出现以下错误:
marsyas-release-0.5\src\marsyas\marsystems\AudioSource.h|74|error: 'mutex' in namespace 'std' does not name a type|
marsyas-release-0.5\src\marsyas\marsystems\AudioSource.h|75|error: 'condition_variable' in namespace 'std' does not name a type|
marsyas-release-0.5\src\marsyas\marsystems\AudioSink.h|70|error: 'mutex' in namespace 'std' does not name a type|
marsyas-release-0.5\src\marsyas\marsystems\AudioSink.h|71|error: 'condition_variable' in namespace 'std' does not name a type|
我已经尝试应用 this Whosebug question 中的建议:在 MinGW 安装管理器中安装 mingw32-pthreads- 包并安装 MinGW-W64,但到目前为止无济于事。
有没有人可以给我一些建议?将不胜感激!
提前致谢, 约书亚
我已经解决了我的问题。您不能使用带有 MinGW 编译器(甚至不是 MinGW-W64)的 C++ 11 线程 API 编译 C++ 项目,因为它们依赖于 UNIX pthread 库来提供 API 的运行时功能。但是,不幸的是,为 Windows 制作的 pthread 包似乎存在很多问题。无论我做什么,我都无法使用 CodeBlocks 成功构建。
我使用 Microsoft Visual Studio 构建项目,确保 select 工具栏中的 Release 目标并在 Build > Configuration Manager 中启用安装目标。现在,我使用 Microsoft Visual C++ 运行时构建了 MARSYAS。我希望将来使用 GNU 运行时在 Windows 上构建它会起作用,但目前我看不到其他选项...