【问题标题】:How do I define a path from an MSYS Makefile for a C++ program?如何从 MSYS Makefile 为 C++ 程序定义路径?
【发布时间】:2016-10-26 08:46:57
【问题描述】:

我的问题:在我在 MSYS 和 MSYS2 环境中使用的 Makefile 中,我知道一个路径 PYTHON_ROOT_DIR,它将在 C++ 程序的编译时使用。问题是 PYTHON_ROOT_DIR 在名为 posix 样式路径的 Makefile 中,例如 /mingw64/bin,在 C++ 程序中,它的格式应类似于 "C:\\prog64\\msys64\\mingw64\\bin"。额外的挑战是,根据配置变量 PYTHONMAJOR,路径应该是宽字符还是普通字符。

我的问题:如何在 Makefile 中解决这个问题,而不需要在 msys 或 msys2 环境中安装额外的程序/脚本?

【问题讨论】:

    标签: c++ c makefile msys msys2


    【解决方案1】:

    msys path conversion (or cygpath for msys?) 解决了部分问题,即如何将 msys 样式路径转换为 ​​windows 样式路径。我在 Makefile 中的完整解决方案是:

    ifeq ($(PYTHONMAJOR),3)
        L=L
    endif
    DEFINES += -DPYTHON_ROOT_DIR=$(L)'"'$(shell (cmd //c echo $(PYTHON_ROOT_DIR)) | sed 's|/|\\\\\\\\|g')'"'
    

    它用正确的路径定义了预处理器符号 PYTHON_ROOT_DIR。

    【讨论】:

    • 我认为这可能是我的 Cygwin 环境或任何自定义设置的问题,但我在 libtool 中发现这会导致我的构建问题导致 sed 等待输入,因为这没有提供。在普通的cmd 提示符下执行此操作会打开一个不会退出的新进程。将其更改为 cmd /c echo ... 可能会产生更好的结果。
    • 我猜cygwin又和msys不一样了……
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-14
    • 1970-01-01
    • 2011-05-07
    • 1970-01-01
    • 1970-01-01
    • 2015-01-28
    相关资源
    最近更新 更多