【问题标题】:Build Environment C++ using Mingw?使用 Mingw 构建环境 C++?
【发布时间】:2019-02-09 13:59:50
【问题描述】:

我已经有一段时间没有编程了,正在尝试在一台新笔记本电脑上设置我的构建环境。我只是忘记了我上次是怎么做的,而且我认为我做错了!

我想要做的是拥有通用的包含目录和通用的 Lib 目录,因此当我构建项目或其他依赖项等时...我的编译器能够找到它需要的所有包含和 lib 文件。我没有受过正式培训,所以对你们来说一些显而易见的事情对我来说是学习点。

我将使用 Mingw 编译器和 MSYS。在内存中,我将 Include 目录和 lib 目录放在了 Mingw 目录中,但在那里我可能错了。

我只是想在 Windows 7 上建立一个有效而简单的构建环境。

我的所有目录都应该放在哪里?谢谢

【问题讨论】:

  • /usr/include 和 /usr/lib 有什么问题?
  • 感谢您的回复。我只是在脑海中拼凑起来,但我猜您指的是默认搜索路径。那是对的吗?用户就像在 Windows 7 中的“用户”目录中一样。我没有在 Win XP 中看到“用户”目录,但这仍然是默认搜索路径。这有点令人困惑。
  • 正确吗?

标签: c++ build environment


【解决方案1】:

如果您还没有,MSYS2 通常比 MSYS 更受欢迎。我将假设 MSYS2 来回答这个问题。我使用的是 64 位版本,这就是我要展示的内容,但它应该足够简单,可以更改。

我还假设您将msys64 目录放在基本目录中,如果没有将C:/msys64/ 替换为C:/wherever/you/put/it/msys64/

在使用 msys shell 时,/c/msys64/usr/C:/msys64/usr/ 相同,与 /usr/ 相同,因为它试图将 Linux 文件组织与 Windows 混合,有时可能会有点不直观。安装 msys 库时,通常包含文件在 C:/msys64/usr/include/ 中,而库在 C:/msys64/usr/lib/ 中。例外情况是当您拥有 64 位版本和 32 位版本的程序时,在这种情况下,标头位于 C:/msys64/mingw64/include/ 中,而库位于 C:/msys64/mingw64/lib/ 中,用于 64 位(mingw32 用于 32位)。

为了使用这些进行构建,您需要添加适当的包含路径和库路径。因此,要使所有 64 位程序可用,您需要添加以下标志

-IC:/msys64/usr/include -IC:/msys64/mingw64/include -LC:/msys64/usr/lib -LC:/msys64/mingw64/lib

当您从源代码编译您自己的程序时,您可以将它们放在您想要的任何位置。最好不要将它们与包管理器放在同一目录中,以免发生冲突。在 msys 上运行 make install 有时不会像在 linux 上那样无缝运行。在这些情况下,创建C:/msys64/custom/include/ 之类的文件夹是一种更安全的选择。请参阅https://unix.stackexchange.com/questions/30/where-should-i-put-software-i-compile-myself 了解更多有关这方面的信息。

【讨论】:

  • 非常感谢。很好的解释!
  • 我可以问一下,关于上面,我是否将我的编译器放在MSYS目录中的mingw64和mingw32目录中?我看到 MSYS 目录中有两个带有 mingw64 和 mingw32 标签的空文件夹。这样做有什么好处,还是只重要的是,无论我把编译器放在哪里,它的 bin 目录都在 'PATH' 环境变量中?
  • @simonyin “将编译器放入”目录到底是什么意思?它们默认安装在 usr/bin 文件夹中(所有与包管理器一起安装的可执行文件也是如此)。
  • 我使用的是 Windows 7。
猜你喜欢
  • 2012-02-05
  • 2017-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-17
  • 1970-01-01
  • 1970-01-01
  • 2014-01-17
相关资源
最近更新 更多