CMake helpers for building F2Py modules
Project description
f2py-cmake
This provides helpers for using F2Py. Use:
include(UseF2Py)
You must have found a Python interpreter beforehand. This will define a
F2Py::F2Py
target (along with a matching F2PY_EXECUTABLE
variable). It will
also provide the following helper functions:
f2py_object_library(<name> <type>)
f2py_generate_module(<module> <files>...
[F2PY_ARGS <args> ...]
[F77 | F90]
[NOLOWER]
[OUTPUT_DIR <OutputDir>]
[OUTPUT_VARIABLE <OutputVariable>]
)
Example
find_package(
Python
COMPONENTS Interpreter Development.Module NumPy
REQUIRED)
include(UseF2Py)
# Create the F2Py `numpyobject` library.
f2py_object_library(f2py_object OBJECT)
f2py_generate_module(fibby fib1.f OUTPUT_VARIABLE fibby_files)
python_add_library(fibby MODULE "${fibby_files}" WITH_SOABI)
target_link_library(fibby PRIVATE f2py_object)
scikit-build-core
To use this package with scikit-build-core, you need to include it in your build requirements:
[build-system]
requires = ["scikit-build-core", "numpy", "f2py-cmake"]
build-backend = "scikit_build_core.build"
Vendoring
You can vendor UseF2Py into your package, as well. This avoids requiring a dependency at build time and protects you against changes in this package, at the expense of requiring manual re-vendoring to get bugfixes and/or improvements. This mechanism is also ideal if you want to support direct builds, outside of scikit-build-core.
You should make a CMake helper directory, such as cmake
. Add this to your
CMakeLists.txt
like this:
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
Then, you can vendor our file into that folder:
pipx run f2py-cmake vendor cmake
Acknowledgements
Support for this work was provided by NSF grant OAC-2209877. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file f2py_cmake-0.1.2.tar.gz
.
File metadata
- Download URL: f2py_cmake-0.1.2.tar.gz
- Upload date:
- Size: 17.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3abeecf331b57142b1e1b8f7a9e1ccae6b78c522db1257ba044b7ede03e5e32f |
|
MD5 | 0ce034c41dbbf637e3c32630afae8409 |
|
BLAKE2b-256 | a16609f8709c59406c091935d28838744a19d4a972b67adbd0252db3abeb6be3 |
File details
Details for the file f2py_cmake-0.1.2-py3-none-any.whl
.
File metadata
- Download URL: f2py_cmake-0.1.2-py3-none-any.whl
- Upload date:
- Size: 15.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6c33adfdac8e339e116420c1bc3810eaad286196fc1cb6298ef3666fe09537fc |
|
MD5 | 83bb8d70a301beb4f4d5573bbe4c95b3 |
|
BLAKE2b-256 | a9126514121ef3ae7cd4f3e99ce0fa738ec9e54d910c0513c060fe14d861e175 |