mirror of
https://github.com/pybind/pybind11.git
synced 2024-11-11 08:03:55 +00:00
Add note that VS2017 requires /permissive- to build in C++17 mode (#2431)
* Add note that VS2017 requires /permissive- to build in C++17 mode * ci: test C++17 on MSVC 2017 * ci: args1/2, use args to override max cxx Co-authored-by: Henry Schreiner <henryschreineriii@gmail.com>
This commit is contained in:
parent
b3d8fec066
commit
43f390ad85
46
.github/workflows/ci.yml
vendored
46
.github/workflows/ci.yml
vendored
@ -16,7 +16,6 @@ jobs:
|
|||||||
matrix:
|
matrix:
|
||||||
runs-on: [ubuntu-latest, windows-latest, macos-latest]
|
runs-on: [ubuntu-latest, windows-latest, macos-latest]
|
||||||
arch: [x64]
|
arch: [x64]
|
||||||
max-cxx-std: [17]
|
|
||||||
python:
|
python:
|
||||||
- 2.7
|
- 2.7
|
||||||
- 3.5
|
- 3.5
|
||||||
@ -28,56 +27,47 @@ jobs:
|
|||||||
- runs-on: ubuntu-latest
|
- runs-on: ubuntu-latest
|
||||||
python: 3.6
|
python: 3.6
|
||||||
arch: x64
|
arch: x64
|
||||||
max-cxx-std: 17
|
args: >
|
||||||
args: "-DPYBIND11_FINDPYTHON=ON"
|
-DPYBIND11_FINDPYTHON=ON
|
||||||
- runs-on: macos-latest
|
|
||||||
python: 3.7
|
|
||||||
arch: x64
|
|
||||||
max-cxx-std: 17
|
|
||||||
args: "-DPYBIND11_FINDPYTHON=ON"
|
|
||||||
- runs-on: windows-2016
|
- runs-on: windows-2016
|
||||||
python: 3.7
|
python: 3.7
|
||||||
arch: x86
|
arch: x86
|
||||||
max-cxx-std: 14
|
args2: >
|
||||||
|
-DCMAKE_CXX_FLAGS="/permissive- /EHsc /GR"
|
||||||
- runs-on: windows-latest
|
- runs-on: windows-latest
|
||||||
python: 3.6
|
python: 3.6
|
||||||
arch: x64
|
arch: x64
|
||||||
max-cxx-std: 17
|
args: >
|
||||||
args: "-DPYBIND11_FINDPYTHON=ON"
|
-DPYBIND11_FINDPYTHON=ON
|
||||||
- runs-on: windows-latest
|
- runs-on: windows-latest
|
||||||
python: 3.7
|
python: 3.7
|
||||||
arch: x64
|
arch: x64
|
||||||
max-cxx-std: 17
|
|
||||||
|
|
||||||
- runs-on: ubuntu-latest
|
- runs-on: ubuntu-latest
|
||||||
python: 3.9-dev
|
python: 3.9-dev
|
||||||
arch: x64
|
arch: x64
|
||||||
max-cxx-std: 17
|
|
||||||
- runs-on: macos-latest
|
- runs-on: macos-latest
|
||||||
python: 3.9-dev
|
python: 3.9-dev
|
||||||
arch: x64
|
arch: x64
|
||||||
max-cxx-std: 17
|
args: >
|
||||||
|
-DPYBIND11_FINDPYTHON=ON
|
||||||
|
|
||||||
exclude:
|
exclude:
|
||||||
# Currently 32bit only, and we build 64bit
|
# Currently 32bit only, and we build 64bit
|
||||||
- runs-on: windows-latest
|
- runs-on: windows-latest
|
||||||
python: pypy2
|
python: pypy2
|
||||||
arch: x64
|
arch: x64
|
||||||
max-cxx-std: 17
|
|
||||||
- runs-on: windows-latest
|
- runs-on: windows-latest
|
||||||
python: pypy3
|
python: pypy3
|
||||||
arch: x64
|
arch: x64
|
||||||
max-cxx-std: 17
|
|
||||||
|
|
||||||
# Currently broken on embed_test
|
# Currently broken on embed_test
|
||||||
- runs-on: windows-latest
|
- runs-on: windows-latest
|
||||||
python: 3.8
|
python: 3.8
|
||||||
arch: x64
|
arch: x64
|
||||||
max-cxx-std: 17
|
|
||||||
- runs-on: windows-latest
|
- runs-on: windows-latest
|
||||||
python: 3.9-dev
|
python: 3.9-dev
|
||||||
arch: x64
|
arch: x64
|
||||||
max-cxx-std: 17
|
|
||||||
|
|
||||||
|
|
||||||
name: "🐍 ${{ matrix.python }} • ${{ matrix.runs-on }} • ${{ matrix.arch }} ${{ matrix.args }}"
|
name: "🐍 ${{ matrix.python }} • ${{ matrix.runs-on }} • ${{ matrix.arch }} ${{ matrix.args }}"
|
||||||
@ -92,8 +82,7 @@ jobs:
|
|||||||
python-version: ${{ matrix.python }}
|
python-version: ${{ matrix.python }}
|
||||||
architecture: ${{ matrix.arch }}
|
architecture: ${{ matrix.arch }}
|
||||||
|
|
||||||
- name: Setup Boost
|
- name: Setup Boost (Windows / Linux latest)
|
||||||
if: runner.os != 'macOS'
|
|
||||||
run: echo "::set-env name=BOOST_ROOT::$BOOST_ROOT_1_72_0"
|
run: echo "::set-env name=BOOST_ROOT::$BOOST_ROOT_1_72_0"
|
||||||
|
|
||||||
- name: Update CMake
|
- name: Update CMake
|
||||||
@ -113,8 +102,7 @@ jobs:
|
|||||||
- name: Prepare env
|
- name: Prepare env
|
||||||
run: python -m pip install -r tests/requirements.txt --prefer-binary
|
run: python -m pip install -r tests/requirements.txt --prefer-binary
|
||||||
|
|
||||||
- name: Configure C++11 ${{ matrix.args }}
|
- name: Configure C++11 ${{ matrix.args1 }}
|
||||||
shell: bash
|
|
||||||
run: >
|
run: >
|
||||||
cmake -S . -B .
|
cmake -S . -B .
|
||||||
-DPYBIND11_WERROR=ON
|
-DPYBIND11_WERROR=ON
|
||||||
@ -138,26 +126,26 @@ jobs:
|
|||||||
- name: Clean directory
|
- name: Clean directory
|
||||||
run: git clean -fdx
|
run: git clean -fdx
|
||||||
|
|
||||||
- name: Configure C++${{ matrix.max-cxx-std }} ${{ matrix.args }}
|
- name: Configure ${{ matrix.args2 }}
|
||||||
shell: bash
|
|
||||||
run: >
|
run: >
|
||||||
cmake -S . -B build2
|
cmake -S . -B build2
|
||||||
-DPYBIND11_WERROR=ON
|
-DPYBIND11_WERROR=ON
|
||||||
-DDOWNLOAD_CATCH=ON
|
-DDOWNLOAD_CATCH=ON
|
||||||
-DDOWNLOAD_EIGEN=ON
|
-DDOWNLOAD_EIGEN=ON
|
||||||
-DCMAKE_CXX_STANDARD=${{ matrix.max-cxx-std }}
|
-DCMAKE_CXX_STANDARD=17
|
||||||
${{ matrix.args }}
|
${{ matrix.args }}
|
||||||
|
${{ matrix.args2 }}
|
||||||
|
|
||||||
- name: Build C++${{ matrix.max-cxx-std }}
|
- name: Build
|
||||||
run: cmake --build build2 -j 2
|
run: cmake --build build2 -j 2
|
||||||
|
|
||||||
- name: Python tests C++${{ matrix.max-cxx-std }}
|
- name: Python tests
|
||||||
run: cmake --build build2 --target pytest
|
run: cmake --build build2 --target pytest
|
||||||
|
|
||||||
- name: C++${{ matrix.max-cxx-std }} tests
|
- name: C++ tests
|
||||||
run: cmake --build build2 --target cpptest
|
run: cmake --build build2 --target cpptest
|
||||||
|
|
||||||
- name: Interface test C++${{ matrix.max-cxx-std }}
|
- name: Interface test
|
||||||
run: cmake --build build2 --target test_cmake_build
|
run: cmake --build build2 --target test_cmake_build
|
||||||
|
|
||||||
clang:
|
clang:
|
||||||
|
@ -35,6 +35,14 @@ Windows
|
|||||||
On Windows, only **Visual Studio 2015** and newer are supported since pybind11 relies
|
On Windows, only **Visual Studio 2015** and newer are supported since pybind11 relies
|
||||||
on various C++11 language features that break older versions of Visual Studio.
|
on various C++11 language features that break older versions of Visual Studio.
|
||||||
|
|
||||||
|
.. Note::
|
||||||
|
|
||||||
|
To use the C++17 in Visual Studio 2017 (MSVC 14.1), pybind11 requires the flag
|
||||||
|
``/permissive-`` to be passed to the compiler `to enforce standard conformance`_. When
|
||||||
|
building with Visual Studio 2019, this is not strictly necessary, but still adviced.
|
||||||
|
|
||||||
|
.. _`to enforce standard conformance`: https://docs.microsoft.com/en-us/cpp/build/reference/permissive-standards-conformance?view=vs-2017
|
||||||
|
|
||||||
To compile and run the tests:
|
To compile and run the tests:
|
||||||
|
|
||||||
.. code-block:: batch
|
.. code-block:: batch
|
||||||
|
Loading…
Reference in New Issue
Block a user