diff --git a/c++/CMakeLists.txt b/c++/CMakeLists.txt
index 308d59efeec71b88a25296778622f103468a9229..fb9588b7334eb0ead27d45517df83bc585b77bc7 100644
--- a/c++/CMakeLists.txt
+++ b/c++/CMakeLists.txt
@@ -6,11 +6,53 @@ set(CMAKE_CXX_STANDARD_REQUIRED True)
 set(CMAKE_CXX_EXTENSIONS OFF)
 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++20")
 
-# julia
-# TODO: use JULIA_BINDIR
-#       with
-#       ${JULIA_BINDIR}/../lib
-#       ${JULIA_BINDIR}/../include/
+# find `julia` command
+if(NOT DEFINED JULIA_BIN)
+    find_program(JULIA_BIN julia)
+    if(NOT JULIA_BIN)
+        message(FATAL_ERROR "Julia binary not found. Please set the JULIA_BIN variable.")
+    endif()
+endif()
+
+# Find Julia's shared directory
+execute_process(
+    COMMAND ${JULIA_BIN} -e "print(joinpath(Sys.BINDIR, Base.DATAROOTDIR, \"julia\"))"
+    OUTPUT_VARIABLE JL_SHAREDIR
+)
+
+# Get flags from julia-config.jl
+execute_process(
+    COMMAND ${JL_SHAREDIR}/julia-config.jl --cflags
+    OUTPUT_VARIABLE JULIA_CFLAGS
+)
+execute_process(
+    COMMAND ${JL_SHAREDIR}/julia-config.jl --cflags
+    OUTPUT_VARIABLE JULIA_CXXFLAGS
+)
+execute_process(
+    COMMAND ${JL_SHAREDIR}/julia-config.jl --ldflags
+    OUTPUT_VARIABLE JULIA_LDFLAGS
+)
+execute_process(
+    COMMAND ${JL_SHAREDIR}/julia-config.jl --ldlibs
+    OUTPUT_VARIABLE JULIA_LDLIBS
+)
+
+# Strip any leading/trailing whitespace from the flags
+string(STRIP "${JULIA_CFLAGS}" JULIA_CFLAGS)
+string(STRIP "${JULIA_CXXFLAGS}" JULIA_CXXFLAGS)
+string(STRIP "${JULIA_LDFLAGS}" JULIA_LDFLAGS)
+string(STRIP "${JULIA_LDLIBS}" JULIA_LDLIBS)
+
+# Set the flags
+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${JULIA_CFLAGS}")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${JULIA_CXXFLAGS}")
+set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${JULIA_LDFLAGS}")
+set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${JULIA_LDFLAGS}")
+# Link the libraries
+#target_link_libraries(${PROJECT_NAME} ${JULIA_LDLIBS})
+
+
 set(JULIA_DIR "" CACHE PATH "Base directory where julia lib/ and include/ directories are located")
 find_library(JULIA_LIB NAMES julia HINTS ${JULIA_DIR}/lib)
 if(NOT JULIA_LIB)