dirac_solver 0.0.1
A Dirac ecuation Solver
Cargando...
Buscando...
Nada coincide
CMakeLists

cmake_minimum_required(VERSION 3.12)

@file CMakeLists.txt

@brief Configuración de compilación para el módulo nativo <tt>dirac_solver_core</tt>.

#

Este archivo define las reglas de construcción del backend C++ del solver de Dirac,

incluyendo el módulo Python <tt>_core</tt> mediante <strong>pybind11</strong>.

#

Estructura general:

- Definición del proyecto y versión mínima de CMake.

- Detección de dependencias (pybind11).

- Creación del módulo Python con pybind11_add_module().

- Inclusión de directorios locales para headers.

- Instalación del módulo en el paquete <tt>dirac_solver</tt>.

#

@ingroup build_system

project(dirac_solver_core LANGUAGES CXX)

Dependencia: pybind11

#

Se asume que pybind11 está disponible en el sistema (vía <tt>pip install pybind11</tt>

o como submódulo de git). Esta dependencia provee las macros y funciones

necesarias para generar módulos Python desde código C++.

#

@note

Si no se encuentra pybind11, CMake mostrará un error en esta etapa.

find_package(pybind11 REQUIRED)

Módulo Python <tt>_core</tt>

#

El siguiente bloque construye un módulo Python compartido llamado <tt>_core</tt>,

a partir del archivo fuente <tt>bindings.cpp</tt>, donde se definen todos los

enlaces (bindings) entre C++ y Python.

#

@note

La palabra clave <tt>MODULE</tt> es esencial: indica a CMake que debe generar

una librería compartida compatible con la carga dinámica de Python

(<tt>import _core</tt>).

pybind11_add_module(_core bindings.cpp )

Inclusión de directorios

#

Se añaden los directorios que contienen los headers locales del proyecto:

- <tt>potentials/</tt> : Implementaciones de potenciales escalares (Coulomb, libre, escalar, etc.)

- <tt>boundaries/</tt> : Implementaciones de condiciones de frontera (periódicas, absorbentes, etc.)

#

Esto permite a <tt>bindings.cpp</tt> y a otras unidades de compilación incluir

estos headers con rutas relativas simples.

target_include_directories(_core PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/potentials ${CMAKE_CURRENT_SOURCE_DIR}/boundaries )

Instalación del módulo

#

Una vez compilado, el módulo <tt>_core</tt> se instalará en el subdirectorio

<tt>dirac_solver/</tt> dentro del entorno Python activo.

#

Esto permite importarlo directamente desde Python:

<tt>python

@section autotoc_md37 from dirac_solver import _core @section autotoc_md38 #

@see bindings.cpp, pybind11_add_module

install(TARGETS _core DESTINATION dirac_solver)