在 Visual Studio 2022 Community Ed. c++ 上构建跨平台 Ubuntu CMake 应用程序的最佳方法是什么?

在 Visual Studio 2022 Community Ed. c++ 上构建跨平台 Ubuntu CMake 应用程序的最佳方法是什么?

问题:

  1. Ubuntu 22.04 和 Visual Studio 2019 Comm Windows 10/11 之间是否存在 CMake 差异?除了 VS2019 的 CMake 版本最低为 3.20 之外,我在 Ubuntu 上一直在使用 3.23。Qt/6.3.1/mingw_64/lib/cmake与 Ubuntu 相比, Qt 在 VS2019 上需要更完整的路径才能找到它Qt/6.3.1/gcc_64。VS2019 发现了一些错误,而 Qt Creator 8.0 Ubuntu 则通过了。
add_library(Feature SHARED
${SOURCES}
${HEADERS}
)

在 Ubuntu 上所有模块都有效,但在 VS2019 上一些子模块无效。它只是空格还是 \n\r 字符?此外,find组件 REQUIRED 导致致命错误,但 CMake 中是否有 OPTIONAL 选项可以避免此致命错误?;

  1. 如何使 githubrepos减少对 Ubuntu 的依赖,例如使用本地系统路径/usr/local/include/usr/local/lib使用两个操作系统共用的非系统本地目录来包含和库?共享库或 DLL 必须与 Windows 上的二进制文件位于同一位置才能运行,或者位于 windows/system32 中。;

  2. 如何避免使用 c:\users\username\source\repos\gitsite1\app1、c:\users\username\source\repos\gitsite2\app2 等?虽然可以使用路径变量,但在某些应用程序中它们会变得非常冗长 - 有首选方法吗?

  3. 如何在 Windows 上使用从源代码构建的库,如 LAPACK、Poco、SDL 等?有ccmake ..适用于 VS2019 的吗?

  4. 如何让 Qt Creator 识别 VS2019 Community Ed。c++ 编译器。我不想使用 mingw_64(默认),而是 VS2019 c++?

  5. 哪种 Fortran 和 ASM 编译器适合 Windows 和 LAPACK?

答案1

  1. Qt Creator 8.0 和 Visual Studio 2022 Community 之间的区别在于 CMakeLists.txt 的检查方式不同。Visual Studio 检查并识别了 CMake 格式。它产生了更多错误。我曾想知道基于 Windows 的 Visual Studio 2019 社区版会对主要使用开源开发库在 Ubuntu 上测试的应用程序产生什么影响。我在 Windows 上升级到了 Visual Studio 2022,看起来 Windows 确实正在变得更加像 Linux 并且对 Linux 更友好。MSVC 运行代码分析选项可能会有所帮助;
  2. GitHub repos 的处理方式与 Ubuntu 类似,但在 Windows 上。Linux 上的本地系统路径是我习惯的。在 Windows 上,PATH 可能也必须用于 DLL - 我不确定,目前我的应用程序在从源代码在 Windows 上构建后可以在 Windows 上运行。我添加了 c:\usr\local 文件夹,其中包含 \bin、\cmake、\include 和 \lib 子文件夹。这与许多应用程序(如 Poco 和 SDL)使用的方案类似;
  3. 是主观的;
  4. Visual Studio 2022 取代了 Visual Studio 2019 Community,似乎作为 IDE 提供的功能更多。我仍然喜欢 Qt Creator,但两者都为开源开发提供了很多功能。Poco 和 LAPACK 就像在 Ubuntu 上构建一样。关键是配置 CMake。LAPACK 使用 C 和 Fortran。[2.] 必须使用,可能与 PATH 一起使用,以便 Ubuntu 应用程序可以在 Windows 上运行,因为需要许多跨平台 Linux 库。我使用了独立的 Intel Fortran,它与 Visual Studio 2022 集成。在配置 CMake 以使用 Fortran 后,编译简单 C 程序的能力已得到修复——对于只喜欢使用工具并稍后阅读说明的人来说,这并不明显;
  5. 仍在使用 Visual Studio 从源代码构建 Qt - 需要 Ninja 和 ASM。Mingw 64 默认方法没有问题;
  6. MASM(Microsoft ASM)和 Intel Fortran(Beta)都与 Visual Studio 2022 集成 - Fortran 中发现的一些问题要么已经修复,要么没有影响我正在做的事情。我不确定 ASM 和 GFortran 是否也存在同样的问题。如果 Intel 编译器是免费的,那么使用它们可能会有所帮助,因为在没有 Nvidia GPU 的情况下提高 Intel 技术的性能可能会很有用。Ubuntu 上的文档工具可能尚未复制,我还没有做到这一点。

相关内容