diff --git a/CMakeLists.txt b/CMakeLists.txt
index b59ddabb0f221b68c352d2b56d227c58deebeda5..0f30fcec2b9690a03b3260a61a53ae2c783544f1 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -262,7 +262,9 @@ if(BA_TESTS)
 endif()
 
 # documentation
-add_subdirectory(hugo)
+if(BORNAGAIN_PYTHON) # required for examples
+    add_subdirectory(hugo)
+endif()
 add_subdirectory(Doc/man)
 if(CONFIGURE_DOXY)
     add_subdirectory(Doc/Doxygen)
diff --git a/Device/CMakeLists.txt b/Device/CMakeLists.txt
index d0159f8470eba33d124b5c1a7aaae182fd7907b8..61245dd0311fa64fb7f8e0f85c639eef3638e680 100644
--- a/Device/CMakeLists.txt
+++ b/Device/CMakeLists.txt
@@ -27,14 +27,17 @@ MakeLib(${lib})
 target_link_libraries(${lib}
     PUBLIC
     BornAgainBase
-    BornAgainPyCore
     BornAgainFit
     BornAgainParam
     BornAgainSample
     BornAgainResample
     ${CMAKE_THREAD_LIBS_INIT}
     ${tspectrum_LIBRARY}
-    )
+)
+if(BORNAGAIN_PYTHON)
+    target_link_libraries(${lib} PUBLIC BornAgainPyCore)
+endif()
+
 target_include_directories(${lib}
     PUBLIC
     ${CMAKE_SOURCE_DIR}
diff --git a/Device/Data/Datafield.h b/Device/Data/Datafield.h
index 9acb6ba3f72acfe79254f0597ba84e50d327cdc2..53e53560465068bf4da5b4762e6f06c6cf83f990 100644
--- a/Device/Data/Datafield.h
+++ b/Device/Data/Datafield.h
@@ -18,7 +18,9 @@
 #include <memory>
 #include <vector>
 
+#ifdef BORNAGAIN_PYTHON
 #include "PyCore/Embed/PyObjectDecl.h"
+#endif
 
 using std::size_t;
 
diff --git a/GUI/CMakeLists.txt b/GUI/CMakeLists.txt
index 5c5c40fc54ae23980809bbe0792792c2a1aaf023..f69e8b2b6fcf36eb399f828078636823dbc5b6a2 100644
--- a/GUI/CMakeLists.txt
+++ b/GUI/CMakeLists.txt
@@ -51,7 +51,6 @@ endif()
 
 target_link_libraries(${lib}
     PUBLIC
-    BornAgainPyCore
     BornAgainSim
     BornAgainImg3D
     Qt6::Widgets
@@ -62,6 +61,9 @@ target_link_libraries(${lib}
     Qt6::PrintSupport
     qcustomplot
 )
+if(BORNAGAIN_PYTHON)
+    target_link_libraries(${lib} PUBLIC BornAgainPyCore)
+endif()
 target_include_directories(${lib} PUBLIC
     ${CMAKE_SOURCE_DIR}
     ${CMAKE_SOURCE_DIR}/3rdparty/GUI/qcustomplot
diff --git a/cmake/BornAgain/MakeLib.cmake b/cmake/BornAgain/MakeLib.cmake
index ecf4520b05dffd219e6b9b5660891dde4c301890..86ad2b519c28d1907571b3fb159e4459e8657435 100644
--- a/cmake/BornAgain/MakeLib.cmake
+++ b/cmake/BornAgain/MakeLib.cmake
@@ -64,31 +64,32 @@ function(MakeLib lib)
 
     if(BORNAGAIN_PYTHON)
         target_compile_definitions(${lib} PRIVATE -DBORNAGAIN_PYTHON)
-    endif()
 
-    # SWIG-produced interface
-    if(swigtmpdir)
-        SwigLib(${name} ${lib} ${swigtmpdir})
-    endif()
+        # SWIG-produced interface
+        if(swigtmpdir)
+            SwigLib(${name} ${lib} ${swigtmpdir})
+        endif()
 
-    # Python package
-    if(BA_PY_PACKAGE)
-        # add the BornAgain library to the Python wheel
-        add_library_to_wheel(${lib})
-    endif()
+        # Python package
+        if(BA_PY_PACKAGE)
+            # add the BornAgain library to the Python wheel
+            add_library_to_wheel(${lib})
+        endif()
 
-    if(WIN32 AND BORNAGAIN_PYTHON)
-        # python in windows required .pyd extension for the library name
-        install(FILES ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${libprefix}${lib}.pyd
-            DESTINATION ${destination_python} COMPONENT Libraries)
-        add_custom_command(
-            TARGET ${lib}
-            POST_BUILD
-            COMMAND ${CMAKE_COMMAND} -E copy
-            ${CMAKE_BINARY_DIR}/bin/${libprefix}${lib}${libsuffix}
-            ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${libprefix}${lib}${libsuffix}
-        )
-    endif()
+        if(WIN32)
+            # python in windows required .pyd extension for the library name
+            install(FILES ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${libprefix}${lib}.pyd
+                DESTINATION ${destination_python} COMPONENT Libraries)
+            add_custom_command(
+                TARGET ${lib}
+                POST_BUILD
+                COMMAND ${CMAKE_COMMAND} -E copy
+                ${CMAKE_BINARY_DIR}/bin/${libprefix}${lib}${libsuffix}
+                ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${libprefix}${lib}${libsuffix}
+            )
+        endif()
+
+    endif() # BORNAGAIN_PYTHON
 
     # installation
     install(TARGETS ${lib}