Skip to content

Commit 8a2c03b

Browse files
committed
Added readme_cpp and CMakeLists changes
1 parent 95434d8 commit 8a2c03b

4 files changed

Lines changed: 85 additions & 6 deletions

File tree

.github/workflows/readme_listings.yml

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ jobs:
9797

9898
assert:
9999
runs-on: ubuntu-latest
100-
needs: [julia, python, matlab, fortran]
100+
needs: [julia, python, matlab, fortran, cpp]
101101
steps:
102102
- uses: actions/setup-python@v2
103103
- run: pip install numpy
@@ -107,6 +107,33 @@ jobs:
107107
merge-multiple: true
108108
path: readme_output
109109
- run : python -c 'import numpy as np; import os; dir="readme_output/"; data=[float(np.loadtxt(dir+file)) for file in os.listdir(dir)]; print("data:", data); similar_as_first = np.array([abs(data[0]-k)/data[0] for k in data[1:]]); print("similar_as_first", similar_as_first); assert((similar_as_first < .5).all())'
110+
111+
cpp:
112+
runs-on: ${{ matrix.os }}
113+
strategy:
114+
fail-fast: false
115+
matrix:
116+
os: [ubuntu-latest, ubuntu-24.04-arm, macos-15, macos-15-intel, windows-latest]
117+
steps:
118+
- uses: actions/checkout@v2
119+
with:
120+
submodules: recursive
121+
122+
- uses: actions/setup-python@v1
123+
with:
124+
python-version: "3.10"
125+
126+
- uses: jwlawson/actions-setup-cmake@v1.13
127+
with:
128+
cmake-version: '3.26.x'
129+
130+
- run: pip install .
131+
- run: |
132+
cd readme_cpp
133+
mkdir build
134+
cd build
135+
cmake ..
136+
make
110137
111138
matlab:
112139
runs-on: ubuntu-22.04

CMakeLists.txt

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,7 @@ function(scoped_sundials_setup_config)
293293

294294
file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/sundials)
295295
execute_process(
296-
COMMAND ${PYTHON_EXECUTABLE} "-c" "import sys; print(''.join([line for line in sys.stdin if line.startswith('set(PACKAGE_VERSION_')]))"
296+
COMMAND ${Python_EXECUTABLE} "-c" "import sys; print(''.join([line for line in sys.stdin if line.startswith('set(PACKAGE_VERSION_')]))"
297297
INPUT_FILE ${CMAKE_SOURCE_DIR}/gitmodules/sundials/CMakeLists.txt
298298
OUTPUT_FILE ${CMAKE_BINARY_DIR}/sundials/CMakeLists.txt
299299
)
@@ -339,7 +339,7 @@ target_include_directories(camplib PRIVATE
339339
)
340340
file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/include/camp)
341341
execute_process(
342-
COMMAND ${PYTHON_EXECUTABLE} "-c" "import sys; print(''.join([line.replace(')','').replace('set(','#define ').replace('PACKAGE_', 'CAMP_') for line in sys.stdin if line.startswith('set(PACKAGE_VERSION')]))"
342+
COMMAND ${Python_EXECUTABLE} "-c" "import sys; print(''.join([line.replace(')','').replace('set(','#define ').replace('PACKAGE_', 'CAMP_') for line in sys.stdin if line.startswith('set(PACKAGE_VERSION')]))"
343343
INPUT_FILE ${CMAKE_SOURCE_DIR}/gitmodules/camp/CMakeLists.txt
344344
OUTPUT_FILE ${CMAKE_BINARY_DIR}/include/camp/version.h
345345
)
@@ -366,7 +366,7 @@ endif()
366366

367367
foreach(file ${hdf5_GENERATED_HEADERS})
368368
execute_process(
369-
COMMAND ${PYTHON_EXECUTABLE} "-c" "import re;open(1,'wb').write(re.sub(b'\\r',b'',open(0,'rb').read()))"
369+
COMMAND ${Python_EXECUTABLE} "-c" "import re;open(1,'wb').write(re.sub(b'\\r',b'',open(0,'rb').read()))"
370370
INPUT_FILE ${CMAKE_SOURCE_DIR}/${file}
371371
OUTPUT_FILE ${CMAKE_BINARY_DIR}/${file}
372372
)
@@ -391,7 +391,7 @@ string(CONCAT cmd
391391
)
392392
include(CheckFunctionExists)
393393
execute_process(
394-
COMMAND ${PYTHON_EXECUTABLE} "-c" "${cmd}"
394+
COMMAND ${Python_EXECUTABLE} "-c" "${cmd}"
395395
INPUT_FILE ${CMAKE_SOURCE_DIR}/gitmodules/netcdf-c/CMakeLists.txt
396396
OUTPUT_FILE ${CMAKE_BINARY_DIR}/netcdf/CMakeLists.txt
397397
)
@@ -516,7 +516,7 @@ string(CONCAT
516516
include(CheckFunctionExists)
517517
foreach(file aero_data;gas_data;output)
518518
execute_process(
519-
COMMAND ${PYTHON_EXECUTABLE} "-c" "${cmd}"
519+
COMMAND ${Python_EXECUTABLE} "-c" "${cmd}"
520520
INPUT_FILE ${CMAKE_SOURCE_DIR}/gitmodules/partmc/src/${file}.F90
521521
OUTPUT_FILE ${CMAKE_BINARY_DIR}/include/${file}_parameters.hpp
522522
)
@@ -627,3 +627,10 @@ foreach(file ${PyPartMC_headers})
627627
endforeach()
628628

629629
_install(TARGETS _PyPartMC LIBRARY DESTINATION PyPartMC)
630+
631+
# for C++ users who wish to link against the PyPartMC shared library
632+
_install(
633+
DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/src/
634+
DESTINATION PyPartMC/include
635+
FILES_MATCHING PATTERN "*.hpp"
636+
)

readme_cpp/CMakeLists.txt

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
cmake_minimum_required(VERSION 3.22)
2+
project(PyPartMC_CXX LANGUAGES CXX)
3+
4+
find_package(Python 3.8 REQUIRED COMPONENTS Interpreter)
5+
message(STATUS "Python_EXECUTABLE= ${Python_EXECUTABLE}")
6+
7+
execute_process(
8+
COMMAND ${Python_EXECUTABLE} -c "from pathlib import Path; import PyPartMC; print(f'{Path(PyPartMC.__file__).parent}/include')"
9+
OUTPUT_VARIABLE PYPARTMC_INCLUDE_DIRS
10+
OUTPUT_STRIP_TRAILING_WHITESPACE
11+
)
12+
13+
message(STATUS "PYPARTMC_INCLUDE_DIRS= ${PYPARTMC_INCLUDE_DIRS}")
14+
15+
execute_process(
16+
COMMAND ${Python_EXECUTABLE} -c "from PyPartMC import _PyPartMC; print(f'{_PyPartMC.__file__}')"
17+
OUTPUT_VARIABLE PYPARTMC_LIB
18+
OUTPUT_STRIP_TRAILING_WHITESPACE
19+
RESULT_VARIABLE res
20+
)
21+
if(res)
22+
message(FATAL_ERROR "Command failed with exit code ${res}")
23+
endif()
24+
25+
message(STATUS "PYPARTMC_LIB= ${PYPARTMC_LIB}")
26+
27+
28+
add_executable(my_test test.cpp)
29+
target_include_directories(my_test PUBLIC
30+
${PYPARTMC_INCLUDE_DIRS}
31+
# ${Python_INCLUDE_DIRS}
32+
RESULT_VARIABLE res
33+
)
34+
if(res)
35+
message(FATAL_ERROR "Command failed with exit code ${res}")
36+
endif()
37+
38+
target_link_libraries(my_test PRIVATE PYPARTMC_LIB)

readme_cpp/test.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#include "bin_grid.hpp"
2+
#include <iostream>
3+
4+
int main(){
5+
BinGrid a;
6+
std::cout << "Success\n";
7+
}

0 commit comments

Comments
 (0)