CMakeLists.txt (1256B)
1 cmake_minimum_required(VERSION 3.10.0) 2 3 project(jacobian) 4 5 set(CMAKE_CXX_COMPILER "g++") 6 7 set(CMAKE_CXX_STANDARD 20) 8 set(CMAKE_CXX_STANDARD_REQUIRED ON) 9 10 if (DEBUG) 11 set(COMPILE_FLAGS, "-Wall") 12 else() 13 set(COMPILE_FLAGS, "-w") 14 endif() 15 16 if (FAST) 17 set(COMPILE_FLAGS "${COMPILE_FLAGS} -O3") 18 elseif (FASTER) 19 set(COMPILE_FLAGS "${COMPILE_FLAGS} -mavx -O3 -mavx -mfma -march=native -mfpmath=sse -DMKL_ILP64") 20 elseif (TRADEOFFS) 21 set(COMPILE_FLAGS "${COMPILE_FLAGS} -mavx -O3 -mavx -msse2 -msse3 -march=native -mfpmath=sse -DMKL_ILP64 -ffast-math -ffast-math") 22 elseif (RECKLESS) 23 set(COMPILE_FLAGS "${COMPILE_FLAGS} -mavx -O3 -mavx -msse2 -msse3 -march=native -mfpmath=sse -DMKL_ILP64 -D NDEBUG -ffast-math -D RECKLESS") 24 endif() 25 26 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COMPILE_FLAGS}") 27 28 find_package(Eigen3 REQUIRED) 29 include_directories(${EIGEN3_INCLUDE_DIR}) 30 message("Found Eigen3: ${EIGEN3_INCLUDE_DIR}") 31 32 if (PYTHON) 33 find_package(pybind11 CONFIG REQUIRED) 34 include_directories(${pybind11_INCLUDE_DIRS}) 35 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC") 36 pybind11_add_module(_jacobian ./src/pybind.cpp ./src/bpnn.cpp ./src/utils.cpp) 37 endif (PYTHON) 38 39 if (CXX) 40 add_executable(jacobian_cli example.cpp ./src/bpnn.cpp ./src/utils.cpp) 41 endif (CXX)