Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Predef always fails on Windows with build-dir directive

未关闭
#32 4 条评论 0 个 reaction 已指派 1 人 在 GitHub 查看

@grafikrobot 已经在做这个了。

开始于 2015年8月7日。

评估

这个 Issue 还没有评估数据。

描述

bug

Hi Rene,

I'm trying to use predef in my Boost.Build project but have run into a strange issue. The check programs like "predef_check_as_cpp.exe" are supposed to return 1 when the check is false, right? I created a test case showing some strange issues on Windows:

Jamroot.jam:

import path ;

path-constant BUILD_PATH : build ;

import predef/check/predef : require check : predef-require predef-check ;

project pwiz 
    : requirements 
        [ predef-check "BOOST_COMP_GNUC >= 4.8" : : <cxxflags>-Wno-unused-local-typedefs ]
        [ predef-check "BOOST_COMP_GNUC >= 4.9" : : <cxxflags>-fdiagnostics-color=always ]

    # comment out the next line and predef works on Windows; on Linux it works either way
    : build-dir $(BUILD_PATH)
    : default-build release
    ;

exe predef_test : predef_test.cpp ;

On Windows/MSVC-12, that's causing this:

predef.predef_check_action check\predef\bin\msvc-12.0\debug\threading-multi\3567d106897dec7fe92d032e763161c1.txt

    check\predef\bin\msvc-12.0\debug\threading-multi\predef_check_as_cpp.exe check\predef\bin\msvc-12.0\debug\threading-multi\predef_check_as_cpp.pdb "BOOST_COMP_GNUC >= 4.8" > check\predef\bin\msvc-12.0\debug\threading-multi\3567d106897dec7fe92d032e763161c1.txt

...failed predef.predef_check_action check\predef\bin\msvc-12.0\debug\threading-multi\3567d106897dec7fe92d032e763161c1.txt...
...removing check\predef\bin\msvc-12.0\debug\threading-multi\3567d106897dec7fe92d032e763161c1.txt
...failed updating 1 target...
Performing configuration checks

    - BOOST_COMP_GNUC >= 4.8   : no
...found 1 target...
...updating 1 target...
predef.predef_check_action check\predef\bin\msvc-12.0\debug\threading-multi\150e0cfdde3cea25efb86d81e179ac7a.txt

    check\predef\bin\msvc-12.0\debug\threading-multi\predef_check_as_cpp.exe check\predef\bin\msvc-12.0\debug\threading-multi\predef_check_as_cpp.pdb "BOOST_COMP_GNUC >= 4.9" > check\predef\bin\msvc-12.0\debug\threading-multi\150e0cfdde3cea25efb86d81e179ac7a.txt

...failed predef.predef_check_action check\predef\bin\msvc-12.0\debug\threading-multi\150e0cfdde3cea25efb86d81e179ac7a.txt...
...removing check\predef\bin\msvc-12.0\debug\threading-multi\150e0cfdde3cea25efb86d81e179ac7a.txt
...failed updating 1 target...
    - BOOST_COMP_GNUC >= 4.9   : no
...found 1 target...
...updating 1 target...
config-cache.write C:\pwiz-src\trunk\pwiz\predef-test\build-nt-x86_64\project-cache.jam
...updated 1 target...
...found 16 targets...

You can see it's building as debug even if I build the rest of the project is building as release, and it's also passing the pdb to the check command. If I edit predef.jam to build as release, then it still fails, but this time it fails because the return code is 1. I don't understand that. The predef.jam code is pretty cryptic relative to my Boost.Build skills, so I'm not sure what's going on. If I get rid of the build-dir directive, it builds fine on Windows (although it's still debug). It builds fine either way on Linux.

主要语言
C
星标
57
派生
87
PR 合并指标
30 天内没有已合并 PR

环境准备

这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

boostorg/predef 的其他 Issue

查看 boostorg/predef 的全部 Issue

相似的 Issue

更多 C Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。