Skip to content

Commit 75aa335

Browse files
committed
add CMakeLists
1 parent 99c7ff3 commit 75aa335

1 file changed

Lines changed: 91 additions & 0 deletions

File tree

CMakeLists.txt

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
cmake_minimum_required (VERSION 3.5)
2+
project (matconvnet)
3+
4+
set(default_build_type "Release")
5+
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
6+
message(STATUS "Setting build type to '${default_build_type}' as none was specified.")
7+
set(CMAKE_BUILD_TYPE "${default_build_type}" CACHE
8+
STRING "Choose the type of build." FORCE)
9+
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
10+
"Debug" "Release" "MinSizeRel" "RelWithDebInfo")
11+
endif()
12+
13+
find_package(Matlab COMPONENTS MX_LIBRARY REQUIRED)
14+
find_package(JPEG REQUIRED)
15+
find_package(OpenMP REQUIRED)
16+
if (OPENMP_FOUND)
17+
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
18+
endif()
19+
20+
add_definitions(-DENABLE_DOUBLE)
21+
include_directories(${JPEG_INCLUDE_DIR})
22+
include_directories(${Matlab_INCLUDE_DIRS})
23+
24+
if(MSVC)
25+
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE)
26+
add_definitions(-D_CRT_SECURE_NO_DEPRECATE)
27+
if(CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
28+
string(REGEX REPLACE "/W[0-4]" "/W1" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
29+
endif()
30+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4068")
31+
endif()
32+
33+
# Snippet to locate the matlab-blas library to link
34+
if(NOT Matlab_BLAS_LIBRARY)
35+
include(${CMAKE_ROOT}/Modules/SelectLibraryConfigurations.cmake)
36+
find_library(Matlab_BLAS_LIBRARY_RELEASE NAMES mwblas libmwblas PATHS ${Matlab_ROOT_DIR} PATH_SUFFIXES extern/lib/win64/microsoft bin/maci64 bin/glnxa64)
37+
find_library(Matlab_BLAS_LIBRARY_DEBUG NAMES mwblasd libmwblasd PATHS ${Matlab_ROOT_DIR} PATH_SUFFIXES extern/lib/win64/microsoft bin/maci64 bin/glnxa64)
38+
select_library_configurations(Matlab_BLAS)
39+
endif()
40+
41+
add_library(matconvnet SHARED
42+
matlab/src/bits/data.cpp
43+
matlab/src/bits/datamex.cpp
44+
matlab/src/bits/nnconv.cpp
45+
matlab/src/bits/nnbias.cpp
46+
matlab/src/bits/nnfullyconnected.cpp
47+
matlab/src/bits/nnsubsample.cpp
48+
matlab/src/bits/nnpooling.cpp
49+
matlab/src/bits/nnnormalize.cpp
50+
matlab/src/bits/nnnormalizelp.cpp
51+
matlab/src/bits/nnbnorm.cpp
52+
matlab/src/bits/nnbilinearsampler.cpp
53+
matlab/src/bits/nnroipooling.cpp
54+
matlab/src/bits/impl/im2row_cpu.cpp
55+
matlab/src/bits/impl/copy_cpu.cpp
56+
matlab/src/bits/impl/tinythread.cpp
57+
matlab/src/bits/impl/imread_libjpeg.cpp
58+
matlab/src/bits/imread.cpp
59+
)
60+
set_property(TARGET matconvnet PROPERTY POSITION_INDEPENDENT_CODE ON)
61+
target_link_libraries(matconvnet ${Matlab_BLAS_LIBRARY} ${JPEG_LIBRARY} ${Matlab_MEX_LIBRARY} ${Matlab_MX_LIBRARY})
62+
install(TARGETS matconvnet DESTINATION ${CMAKE_SOURCE_DIR}/matlab/)
63+
64+
if(NOT MSVC)
65+
set(VL_TMOVE "vl_tmove" "matlab/src/vl_tmove.cpp")
66+
endif()
67+
68+
list(APPEND vl_files
69+
vl_imreadjpeg matlab/src/vl_imreadjpeg.cpp
70+
vl_imreadjpeg_old matlab/src/vl_imreadjpeg_old.cpp
71+
vl_nnbilinearsampler matlab/src/vl_nnbilinearsampler.cpp
72+
vl_nnbnorm matlab/src/vl_nnbnorm.cpp
73+
vl_nnconv matlab/src/vl_nnconv.cpp
74+
vl_nnconvt matlab/src/vl_nnconvt.cpp
75+
vl_nnnormalize matlab/src/vl_nnnormalize.cpp
76+
vl_nnnormalizelp matlab/src/vl_nnnormalizelp.cpp
77+
vl_nnpool matlab/src/vl_nnpool.cpp
78+
vl_nnroipool matlab/src/vl_nnroipool.cpp
79+
vl_taccummex matlab/src/vl_taccummex.cpp
80+
${VL_TMOVE}
81+
)
82+
83+
list(LENGTH vl_files size)
84+
math(EXPR size "${size} - 1")
85+
foreach(val RANGE 0 ${size} 2)
86+
math(EXPR nextval "${val} + 1")
87+
list(GET vl_files ${val} mex)
88+
list(GET vl_files ${nextval} src)
89+
matlab_add_mex(NAME ${mex} SRC ${src} LINK_TO ${JPEG_LIBRARY} matconvnet)
90+
install(TARGETS ${mex} DESTINATION ${CMAKE_SOURCE_DIR}/matlab/)
91+
endforeach()

0 commit comments

Comments
 (0)