|
1 | 1 | cmake_minimum_required(VERSION 3.6) |
2 | 2 | project(RandomForest) |
3 | 3 |
|
4 | | -include(CMake/Autodownload.cmake) |
5 | 4 | include(CMake/ConfigureCrossCompile.cmake) |
| 5 | +include(CMake/mlpack.cmake) |
6 | 6 |
|
7 | 7 | option(USE_OPENMP "If available, use OpenMP for parallelization." ON) |
8 | 8 |
|
9 | | -# Set required standard to C++17. |
10 | | -set(CMAKE_CXX_STANDARD 17) |
11 | | -set(CMAKE_CXX_STANDARD_REQUIRED ON) |
12 | | - |
13 | | -# If we're using gcc, then we need to link against pthreads to use std::thread, |
14 | | -# which we do in the tests. |
15 | | -if (CMAKE_COMPILER_IS_GNUCC) |
16 | | - find_package(Threads) |
17 | | - set(MLPACK_LIBRARIES ${MLPACK_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT}) |
18 | | -endif() |
19 | | - |
20 | | -search_openblas(0.3.26) |
21 | | - |
22 | | -get_deps(https://files.mlpack.org/armadillo-12.6.5.tar.gz armadillo armadillo-12.6.5.tar.gz) |
23 | | -set(ARMADILLO_INCLUDE_DIR ${GENERIC_INCLUDE_DIR}) |
24 | | -find_package(Armadillo REQUIRED) |
25 | | -# Include directories for the previous dependencies. |
26 | | -set(MLPACK_INCLUDE_DIRS ${MLPACK_INCLUDE_DIRS} ${ARMADILLO_INCLUDE_DIRS}) |
27 | | -set(MLPACK_LIBRARIES ${MLPACK_LIBRARIES} ${ARMADILLO_LIBRARIES}) |
28 | | - |
29 | | -# Find stb_image.h and stb_image_write.h. |
30 | | -get_deps(https://mlpack.org/files/stb.tar.gz stb stb.tar.gz) |
31 | | -set(STB_IMAGE_INCLUDE_DIR ${GENERIC_INCLUDE_DIR}) |
32 | | -set(MLPACK_INCLUDE_DIRS ${MLPACK_INCLUDE_DIRS} "${STB_IMAGE_INCLUDE_DIR}") |
33 | | - |
34 | | -# Find ensmallen. |
35 | | -get_deps(https://www.ensmallen.org/files/ensmallen-latest.tar.gz ensmallen ensmallen-latest.tar.gz) |
36 | | -set(ENSMALLEN_INCLUDE_DIR ${GENERIC_INCLUDE_DIR}) |
37 | | -set(MLPACK_INCLUDE_DIRS ${MLPACK_INCLUDE_DIRS} "${ENSMALLEN_INCLUDE_DIR}") |
38 | | - |
39 | | -# Find cereal. |
40 | | -get_deps(https://github.com/USCiLab/cereal/archive/refs/tags/v1.3.0.tar.gz cereal cereal-1.3.0.tar.gz) |
41 | | -set(CEREAL_INCLUDE_DIR ${GENERIC_INCLUDE_DIR}) |
42 | | -set(MLPACK_INCLUDE_DIRS ${MLPACK_INCLUDE_DIRS} ${CEREAL_INCLUDE_DIR}) |
43 | | - |
44 | | -# Detect OpenMP support in a compiler. If the compiler supports OpenMP, flags |
45 | | -# to compile with OpenMP are returned and added. Note that MSVC does not |
46 | | -# support a new-enough version of OpenMP to be useful. |
47 | | -if (USE_OPENMP) |
48 | | - find_package(OpenMP) |
49 | | -endif () |
50 | | - |
51 | | -if (OpenMP_FOUND AND OpenMP_CXX_VERSION VERSION_GREATER_EQUAL 3.0.0) |
52 | | - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") |
53 | | - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") |
54 | | - set(MLPACK_LIBRARIES ${MLPACK_LIBRARIES} ${OpenMP_CXX_LIBRARIES}) |
55 | | -else () |
56 | | - # Disable warnings for all the unknown OpenMP pragmas. |
57 | | - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unknown-pragmas") |
58 | | - set(OpenMP_CXX_FLAGS "") |
59 | | -endif () |
60 | | - |
61 | | -include_directories(BEFORE ${MLPACK_INCLUDE_DIRS}) |
62 | | -include_directories(BEFORE ${CMAKE_CURRENT_SOURCE_DIR}/src/) |
63 | | - |
64 | | -# Finally, add any cross-compilation support libraries (they may need to come |
65 | | -# last). If we are not cross-compiling, no changes will happen here. |
66 | | -set(MLPACK_LIBRARIES ${MLPACK_LIBRARIES} ${CROSS_COMPILE_SUPPORT_LIBRARIES}) |
| 9 | +fetch_mlpack(ON) |
67 | 10 |
|
68 | 11 | add_executable(RandomForest main.cpp ${SOURCES_FILES}) |
69 | 12 | target_sources(RandomForest PRIVATE ${SOURCE_FILES}) |
70 | 13 |
|
71 | 14 | target_include_directories(RandomForest PRIVATE |
72 | 15 | ${MLPACK_INCLUDE_DIRS} |
73 | | - /meta/mlpack/src/ |
74 | 16 | ) |
75 | 17 |
|
76 | 18 | target_link_libraries(RandomForest PRIVATE -static |
|
0 commit comments