@ -6,7 +6,7 @@ set(Darknet_PATCH_VERSION 5)
set ( Darknet_VERSION ${ Darknet_MAJOR_VERSION } . ${ Darknet_MINOR_VERSION } . ${ Darknet_PATCH_VERSION } )
set ( CMAKE_VERBOSE_MAKEFILE "FALSE" CACHE BOOL "Create verbose makefile" )
set ( BUILD_SHARED_LIBS "TRUE" CACHE BOOL "Create darklib as a shared library" )
set ( BUILD_SHARED_LIBS "TRUE" CACHE BOOL "Create dark as a shared library" )
if ( DEFINED ENV{VCPKG_ROOT} AND NOT DEFINED CMAKE_TOOLCHAIN_FILE )
set ( CMAKE_TOOLCHAIN_FILE "$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake" CACHE STRING "" )
@ -30,99 +30,87 @@ set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake/Modules/" ${CMAKE_MODULE_
set ( CMAKE_INSTALL_PREFIX "${CMAKE_CURRENT_LIST_DIR}" CACHE PATH "Install prefix" FORCE )
set ( INSTALL_BIN_DIR "${CMAKE_CURRENT_LIST_DIR}" CACHE PATH "Path where exe and dll will be installed" )
set ( INSTALL_LIB_DIR "lib" CACHE PATH "Path where lib will be installed" )
set ( INSTALL_INCLUDE_DIR "include" CACHE PATH "Path where headers will be installed" )
set ( INSTALL_LIB_DIR "${CMAKE_CURRENT_LIST_DIR}" CACHE PATH "Path where lib will be installed" )
set ( INSTALL_INCLUDE_DIR "include/darknet " CACHE PATH "Path where headers will be installed" )
set ( INSTALL_CMAKE_DIR "share/darknet" CACHE PATH "Path where cmake configs will be installed" )
# M a k e r e l a t i v e p a t h s absolute ( needed later on )
foreach ( p LIB BIN INCLUDE CMAKE )
set ( var INSTALL_ ${ p } _DIR )
if ( NOT IS_ABSOLUTE "${${var}}" )
set ( ${ var } "${CMAKE_INSTALL_PREFIX}/${${var}}" )
endif ( )
endforeach ( )
configure_file (
" $ { C M A K E _ C U R R E N T _ L I S T _ D I R } / s r c / v e r s i o n . h . i n "
" $ { C M A K E _ C U R R E N T _ L I S T _ D I R } / s r c / v e r s i o n . h "
)
set ( ENABLE_CUDA "FALSE" CACHE BOOL "Enable CUDA support" )
set ( ENABLE_CUDNN "FALSE" CACHE BOOL "Enable CUDNN" )
set ( ENABLE_CUDNN_HALF "FALSE" CACHE BOOL "Enable CUDNN Half precision" )
set ( ENABLE_CUDA "TRUE" CACHE BOOL "Enable CUDA build" )
if ( ${ CMAKE_VERSION } VERSION_LESS "3.8.0" )
set ( ENABLE_CUDA "FALSE" CACHE BOOL "Enable CUDA build" FORCE )
message ( WARNING "To build with CUDA support you need CMake 3.8.0+" )
if ( ${ CMAKE_VERSION } VERSION_LESS "3.9.0" )
set ( ENABLE_CUDA "FALSE" CACHE BOOL "Enable CUDA support" FORCE )
message ( WARNING "To build with CUDA support you need CMake 3.9.0+" )
else ( )
include ( CheckLanguage )
check_language ( CUDA )
if ( CMAKE_CUDA_COMPILER )
set ( CUDA_ARCHITECTURES "Auto" CACHE STRING "\" Auto\ " detects local machine GPU compute arch at runtime, \" Common\ " and \" All\ " cover common and entire subsets of architectures, \" Names\ " is a list of architectures to enable by name, \" Numbers\ " is a list of compute capabilities (version number) to enable" )
set_property ( CACHE CUDA_ARCHITECTURES PROPERTY STRINGS "Auto" "Common" "All" "Kepler Maxwell Kepler+Tegra Maxwell+Tegra Pascal" "3.0 7.5" )
enable_language ( CUDA )
else ( )
set ( ENABLE_CUDA "FALSE" CACHE BOOL "Enable CUDA build" FORCE )
find_package ( CUDA REQUIRED )
if ( CUDA_VERSION VERSION_LESS "9.0" )
message ( STATUS "Unsupported CUDA version, please upgrade to CUDA 9+. Disabling CUDA support" )
else ( )
set ( ENABLE_CUDA "TRUE" CACHE BOOL "Enable CUDA support" FORCE )
cuda_select_nvcc_arch_flags ( CUDA_ARCH_FLAGS ${ CUDA_ARCHITECTURES } )
message ( STATUS "Building with CUDA flags: " "${CUDA_ARCH_FLAGS}" )
if ( "arch=compute_75,code=sm_75" IN_LIST CUDA_ARCH_FLAGS )
set ( ENABLE_CUDNN_HALF "TRUE" CACHE BOOL "Enable CUDNN Half precision" FORCE )
message ( STATUS "Your setup supports half precision!" )
endif ( )
endif ( )
endif ( )
endif ( )
set ( CUDA_COMPUTE_MODEL_75 "75" ) # C o m p u t e c a p a b i l i t y f o r T e s l a T 4 , R T X 2 0 8 0
set ( CUDA_COMPUTE_MODEL_72 "72" ) # C o m p u t e c a p a b i l i t y f o r J e t s o n X a v i e r
set ( CUDA_COMPUTE_MODEL_70 "70" ) # C o m p u t e c a p a b i l i t y f o r T e s l a V 1 0 0
set ( CUDA_COMPUTE_MODEL_62 "62" ) # C o m p u t e c a p a b i l i t y f o r J e t s o n T X 2
set ( CUDA_COMPUTE_MODEL_61 "61" ) # C o m p u t e c a p a b i l i t y f o r T e s l a P 4 0
set ( CUDA_COMPUTE_MODEL_60 "60" ) # C o m p u t e c a p a b i l i t y f o r T e s l a P 1 0 0
set ( CUDA_COMPUTE_MODEL_53 "53" ) # C o m p u t e c a p a b i l i t y f o r J e t s o n T X 1
set ( CUDA_COMPUTE_MODEL_52 "52" ) # C o m p u t e c a p a b i l i t y f o r T e s l a M 4 0 / M 6 0
set ( CUDA_COMPUTE_MODEL_37 "37" ) # C o m p u t e c a p a b i l i t y f o r T e s l a K 8 0
set ( CUDA_COMPUTE_MODEL_35 "35" ) # C o m p u t e c a p a b i l i t y f o r T e s l a K 2 0 / K 4 0
set ( CUDA_COMPUTE_MODEL_30 "30" ) # C o m p u t e c a p a b i l i t y f o r T e s l a K 1 0 , Q u a d r o K 4 0 0 0
set ( default_cuda_compute_model ${ CUDA_COMPUTE_MODEL_30 } )
if ( ENABLE_CUDA AND NOT CUDA_COMPUTE_MODEL )
message ( STATUS "Setting the compute model to ${default_cuda_compute_model} as none was specified." )
set ( CUDA_COMPUTE_MODEL "${default_cuda_compute_model}" CACHE
S T R I N G " C h o o s e t h e b e s t c o m p u t e m o d e l s u p p o r t e d b y y o u r G P U " F O R C E )
set_property ( CACHE CUDA_COMPUTE_MODEL PROPERTY STRINGS ${ CUDA_COMPUTE_MODEL_75 } ${ CUDA_COMPUTE_MODEL_72 } ${ CUDA_COMPUTE_MODEL_70 } ${ CUDA_COMPUTE_MODEL_62 } ${ CUDA_COMPUTE_MODEL_61 } ${ CUDA_COMPUTE_MODEL_60 } ${ CUDA_COMPUTE_MODEL_53 } ${ CUDA_COMPUTE_MODEL_52 } ${ CUDA_COMPUTE_MODEL_37 } ${ CUDA_COMPUTE_MODEL_35 } ${ CUDA_COMPUTE_MODEL_30 } )
endif ( )
if ( NOT ENABLE_CUDA )
set ( CUDA_COMPUTE_MODEL "0" CACHE STRING "CUDA Compute Model set to 0 because CUDA is missing" FORCE )
endif ( )
if ( USE_INTEGRATED_LIBS )
set ( PThreads_windows_DIR ${ CMAKE_CURRENT_LIST_DIR } /3rdparty/pthreads CACHE PATH "Path where pthreads for windows can be located" )
add_definitions ( -D_TIMESPEC_DEFINED )
endif ( )
set ( Stb_DIR ${ CMAKE_CURRENT_LIST_DIR } /3rdparty/stb CACHE PATH "Path where Stb image library can be located" )
set ( CMAKE_DEBUG_POSTFIX d )
add_definitions ( -DUSE_CMAKE_LIBS )
set ( CMAKE_THREAD_PREFER_PTHREAD ON )
find_package ( Threads REQUIRED )
if ( MSVC )
set ( CMAKE_CXX_FLAGS "/wd4013 /wd4018 /wd4028 /wd4047 /wd4068 /wd4090 /wd4101 /wd4113 /wd4133 /wd4190 /wd4244 /wd4267 /wd4305 /wd4477 /wd4996 /wd4819 /fp:fast ${CMAKE_CXX_FLAGS}" )
string ( REGEX REPLACE "/O2" "/Ox" CMAKE_CXX_FLAGS_RELEASE ${ CMAKE_CXX_FLAGS_RELEASE } )
add_definitions ( -D_CRT_RAND_S )
add_definitions ( -DNOMINMAX )
add_definitions ( -D_USE_MATH_DEFINES )
find_package ( PThreads_windows REQUIRED )
endif ( )
find_package ( OpenCV )
find_package ( Stb REQUIRED )
if ( ${ CMAKE_VERSION } VERSION_LESS "3.9.0" )
message ( WARNING "To build with OpenMP support you need CMake 3.9.0+" )
else ( )
find_package ( OpenMP )
endif ( )
if ( CMAKE_COMPILER_IS_GNUCC )
set ( CMAKE_CXX_FLAGS "-Wno-unused-result -Wno-write-strings ${CMAKE_CXX_FLAGS}" )
string ( REGEX REPLACE "-O0" "-Og" CMAKE_CXX_FLAGS_DEBUG ${ CMAKE_CXX_FLAGS_DEBUG } )
string ( REGEX REPLACE "-O3" "-Ofast" CMAKE_CXX_FLAGS_RELEASE ${ CMAKE_CXX_FLAGS_RELEASE } )
set ( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -ffp-contract=fast -mavx -mavx2 -msse3 -msse4.1 -msse4.2 -msse4a" )
set ( ADDITIONAL_CXX_FLAGS "-Wall -Wno-unused-result -Wno-unknown-pragmas -Wfatal-errors -Wno-deprecated-declarations -Wno-write-strings" )
set ( ADDITIONAL_C_FLAGS "-Wall -Wno-unused-result -Wno-unknown-pragmas -Wfatal-errors -Wno-deprecated-declarations -Wno-write-strings" )
if ( MSVC )
set ( ADDITIONAL_CXX_FLAGS "/wd4013 /wd4018 /wd4028 /wd4047 /wd4068 /wd4090 /wd4101 /wd4113 /wd4133 /wd4190 /wd4244 /wd4267 /wd4305 /wd4477 /wd4996 /wd4819 /fp:fast" )
set ( ADDITIONAL_C_FLAGS "/wd4013 /wd4018 /wd4028 /wd4047 /wd4068 /wd4090 /wd4101 /wd4113 /wd4133 /wd4190 /wd4244 /wd4267 /wd4305 /wd4477 /wd4996 /wd4819 /fp:fast" )
set ( CMAKE_CXX_FLAGS "${ADDITIONAL_CXX_FLAGS} ${CMAKE_CXX_FLAGS}" )
set ( CMAKE_C_FLAGS "${ADDITIONAL_C_FLAGS} ${CMAKE_C_FLAGS}" )
string ( REGEX REPLACE "/O2" "/Ox" CMAKE_CXX_FLAGS_RELEASE ${ CMAKE_CXX_FLAGS_RELEASE } )
string ( REGEX REPLACE "/O2" "/Ox" CMAKE_C_FLAGS_RELEASE ${ CMAKE_C_FLAGS_RELEASE } )
endif ( )
if ( "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" )
if ( UNIX AND NOT APPLE )
set ( CMAKE_CXX_FLAGS "-pthread ${CMAKE_CXX_FLAGS}" ) # f o r c e p t h r e a d t o a v o i d b u g s i n s o m e c m a k e s e t u p s
if ( CMAKE_COMPILER_IS_GNUCC OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" )
if ( "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" )
if ( UNIX AND NOT APPLE )
set ( CMAKE_CXX_FLAGS "-pthread ${CMAKE_CXX_FLAGS}" ) # f o r c e p t h r e a d t o a v o i d b u g s i n s o m e c m a k e s e t u p s
set ( CMAKE_C_FLAGS "-pthread ${CMAKE_C_FLAGS}" )
endif ( )
endif ( )
set ( CMAKE_CXX_FLAGS "-Wno-deprecated -Wno-writable-strings ${CMAKE_CXX_FLAGS}" )
set ( CMAKE_CXX_FLAGS "${ADDITIONAL_CXX_FLAGS} ${CMAKE_CXX_FLAGS}" )
set ( CMAKE_C_FLAGS "${ADDITIONAL_C_FLAGS} ${CMAKE_C_FLAGS}" )
string ( REGEX REPLACE "-O0" "-Og" CMAKE_CXX_FLAGS_DEBUG ${ CMAKE_CXX_FLAGS_DEBUG } )
string ( REGEX REPLACE "-O3" "-Ofast" CMAKE_CXX_FLAGS_RELEASE ${ CMAKE_CXX_FLAGS_RELEASE } )
string ( REGEX REPLACE "-O0" "-Og" CMAKE_C_FLAGS_DEBUG ${ CMAKE_C_FLAGS_DEBUG } )
string ( REGEX REPLACE "-O3" "-Ofast" CMAKE_C_FLAGS_RELEASE ${ CMAKE_C_FLAGS_RELEASE } )
set ( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -ffp-contract=fast -mavx -mavx2 -msse3 -msse4.1 -msse4.2 -msse4a" )
set ( CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -ffp-contract=fast -mavx -mavx2 -msse3 -msse4.1 -msse4.2 -msse4a" )
endif ( )
set ( ENABLE_OPENCV "TRUE" CACHE BOOL "Enable OpenCV integration" )
if ( ENABLE_OPENCV )
find_package ( OpenCV )
endif ( )
find_package ( Stb REQUIRED )
set ( SKIP_USELIB_TRACK "FALSE" CACHE BOOL "Skip building uselib_track" FORCE )
if ( OpenCV_FOUND )
if ( ENABLE_CUDA AND NOT OpenCV_CUDA_VERSION )
@ -130,56 +118,40 @@ if(OpenCV_FOUND)
message ( STATUS " -> darknet is fine for now, but uselib_track has been disabled!" )
message ( STATUS " -> Please rebuild OpenCV from sources with CUDA support to enable it" )
endif ( )
add_definitions ( -DOPENCV )
endif ( )
if ( ENABLE_CUDA )
add_definitions ( -DGPU )
if ( NOT WIN32 )
include_directories ( "${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES}" )
link_directories ( "${CMAKE_CUDA_IMPLICIT_LINK_DIRECTORIES}" )
endif ( )
if ( CUDA_COMPUTE_MODEL VERSION_GREATER_EQUAL ${ CUDA_COMPUTE_MODEL_75 } AND CMAKE_CUDA_COMPILER_VERSION VERSION_LESS_EQUAL 9 )
message ( STATUS "CUDA 10 is required for Compute Model 7.5 - Lowering settings to 7.0" )
set ( CUDA_COMPUTE_MODEL ${ CUDA_COMPUTE_MODEL_70 } )
endif ( )
find_package ( CUDNN )
if ( CUDNN_FOUND )
add_definitions ( -DCUDNN )
if ( CUDA_COMPUTE_MODEL VERSION_GREATER_EQUAL ${ CUDA_COMPUTE_MODEL_70 } )
add_definitions ( -DCUDNN_HALF )
message ( STATUS "Enabled CUDNN_HALF" )
endif ( )
set ( ENABLE_CUDNN "TRUE" CACHE BOOL "Enable CUDNN" FORCE )
endif ( )
endif ( )
if ( ENABLE_CUDA )
if ( MSVC )
set ( ADDITIONAL_CXX_FLAGS "${ADDITIONAL_CXX_FLAGS} /DGPU" )
if ( CUDNN_FOUND )
if ( OpenCV_FOUND )
set ( CMAKE_CUDA_FLAGS "-gencode arch=compute_${CUDA_COMPUTE_MODEL},code=[sm_${CUDA_COMPUTE_MODEL},compute_${CUDA_COMPUTE_MODEL}] -Wno-deprecated-declarations -Xcompiler=\" /wd4028,/wd4190,/wd4244,/wd4267,/wd4305,/wd4477,/wd4996,/wd4819,/DGPU,/DCUDNN,/DOPENCV\ " ${CMAKE_CUDA_FLAGS}" )
else ( )
set ( CMAKE_CUDA_FLAGS "-gencode arch=compute_${CUDA_COMPUTE_MODEL},code=[sm_${CUDA_COMPUTE_MODEL},compute_${CUDA_COMPUTE_MODEL}] -Wno-deprecated-declarations -Xcompiler=\" /wd4028,/wd4190,/wd4244,/wd4267,/wd4305,/wd4477,/wd4996,/wd4819,/DGPU,/DCUDNN\ " ${CMAKE_CUDA_FLAGS}" )
endif ( )
else ( )
if ( OpenCV_FOUND )
set ( CMAKE_CUDA_FLAGS "-gencode arch=compute_${CUDA_COMPUTE_MODEL},code=[sm_${CUDA_COMPUTE_MODEL},compute_${CUDA_COMPUTE_MODEL}] -Wno-deprecated-declarations -Xcompiler=\" /wd4028,/wd4190,/wd4244,/wd4267,/wd4305,/wd4477,/wd4996,/wd4819,/DGPU,/DOPENCV\ " ${CMAKE_CUDA_FLAGS}" )
else ( )
set ( CMAKE_CUDA_FLAGS "-gencode arch=compute_${CUDA_COMPUTE_MODEL},code=[sm_${CUDA_COMPUTE_MODEL},compute_${CUDA_COMPUTE_MODEL}] -Wno-deprecated-declarations -Xcompiler=\" /wd4028,/wd4190,/wd4244,/wd4267,/wd4305,/wd4477,/wd4996,/wd4819,/DGPU\ " ${CMAKE_CUDA_FLAGS}" )
endif ( )
set ( ADDITIONAL_CXX_FLAGS "${ADDITIONAL_CXX_FLAGS} /DCUDNN" )
endif ( )
if ( OpenCV_FOUND )
set ( ADDITIONAL_CXX_FLAGS "${ADDITIONAL_CXX_FLAGS} /DOPENCV" )
endif ( )
string ( REPLACE " " "," ADDITIONAL_CXX_FLAGS_COMMA_SEPARATED "${ADDITIONAL_CXX_FLAGS}" )
set ( CUDA_HOST_COMPILER_FLAGS "-Wno-deprecated-declarations -Xcompiler=\" ${ ADDITIONAL_CXX_FLAGS_COMMA_SEPARATED } \"")
else ( )
set ( ADDITIONAL_CXX_FLAGS "${ADDITIONAL_CXX_FLAGS} -DGPU" )
if ( CUDNN_FOUND )
if ( OpenCV_FOUND )
set ( CMAKE_CUDA_FLAGS "-gencode arch=compute_${CUDA_COMPUTE_MODEL},code=[sm_${CUDA_COMPUTE_MODEL},compute_${CUDA_COMPUTE_MODEL}] --compiler-options \" -Wall -Wno-unused-result -Wno-unknown-pragmas -Wfatal-errors -Wno-deprecated-declarations -fPIC -fopenmp -Ofast -DOPENCV -DGPU -DCUDNN \" ${ CMAKE_CUDA_FLAGS } " )
else ( )
set ( CMAKE_CUDA_FLAGS "-gencode arch=compute_${CUDA_COMPUTE_MODEL},code=[sm_${CUDA_COMPUTE_MODEL},compute_${CUDA_COMPUTE_MODEL}] --compiler-options \" -Wall -Wno-unused-result -Wno-unknown-pragmas -Wfatal-errors -Wno-deprecated-declarations -fPIC -fopenmp -Ofast -DGPU -DCUDNN \" ${ CMAKE_CUDA_FLAGS } " )
endif ( )
else ( )
if ( OpenCV_FOUND )
set ( CMAKE_CUDA_FLAGS "-gencode arch=compute_${CUDA_COMPUTE_MODEL},code=[sm_${CUDA_COMPUTE_MODEL},compute_${CUDA_COMPUTE_MODEL}] --compiler-options \" -Wall -Wno-unused-result -Wno-unknown-pragmas -Wfatal-errors -Wno-deprecated-declarations -fPIC -fopenmp -Ofast -DOPENCV -DGPU \" ${ CMAKE_CUDA_FLAGS } " )
else ( )
set ( CMAKE_CUDA_FLAGS "-gencode arch=compute_${CUDA_COMPUTE_MODEL},code=[sm_${CUDA_COMPUTE_MODEL},compute_${CUDA_COMPUTE_MODEL}] --compiler-options \" -Wall -Wno-unused-result -Wno-unknown-pragmas -Wfatal-errors -Wno-deprecated-declarations -fPIC -fopenmp -Ofast -DGPU \" ${ CMAKE_CUDA_FLAGS } " )
endif ( )
set ( ADDITIONAL_CXX_FLAGS "${ADDITIONAL_CXX_FLAGS} -DCUDNN" )
endif ( )
if ( OpenCV_FOUND )
set ( ADDITIONAL_CXX_FLAGS "${ADDITIONAL_CXX_FLAGS} -DOPENCV" )
endif ( )
set ( CUDA_HOST_COMPILER_FLAGS "--compiler-options \" ${ ADDITIONAL_CXX_FLAGS } -fPIC -fopenmp -Ofast \"")
endif ( )
string ( REPLACE ";" " " CUDA_ARCH_FLAGS_SPACE_SEPARATED "${CUDA_ARCH_FLAGS}" )
set ( CMAKE_CUDA_FLAGS "${CUDA_ARCH_FLAGS_SPACE_SEPARATED} ${CUDA_HOST_COMPILER_FLAGS} ${CMAKE_CUDA_FLAGS}" )
message ( STATUS "CMAKE_CUDA_FLAGS: ${CMAKE_CUDA_FLAGS}" )
endif ( )
set ( ENABLE_ZED_CAMERA "TRUE" CACHE BOOL "Enable ZED Camera support" )
@ -189,7 +161,6 @@ if(ENABLE_CUDA)
if ( ZED_FOUND )
include_directories ( ${ ZED_INCLUDE_DIRS } )
link_directories ( ${ ZED_LIBRARY_DIR } )
add_definitions ( -DZED_STEREO )
message ( STATUS "ZED SDK enabled" )
else ( )
message ( STATUS "ZED SDK not found" )
@ -201,20 +172,19 @@ else()
set ( ENABLE_ZED_CAMERA "FALSE" CACHE BOOL "Enable ZED Camera support" FORCE )
endif ( )
set ( CMAKE_THREAD_PREFER_PTHREAD ON )
find_package ( Threads REQUIRED )
if ( MSVC )
find_package ( PThreads_windows REQUIRED )
endif ( )
if ( ${ CMAKE_VERSION } VERSION_LESS "3.9.0" )
message ( WARNING "To build with OpenMP support you need CMake 3.9.0+" )
else ( )
find_package ( OpenMP )
if ( OPENMP_FOUND )
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}" )
set ( DARKNET_INSTALL_INCLUDE_DIR ${ INSTALL_INCLUDE_DIR } )
# M a k e r e l a t i v e p a t h s absolute ( needed later on )
foreach ( p LIB BIN INCLUDE CMAKE )
set ( var INSTALL_ ${ p } _DIR )
if ( NOT IS_ABSOLUTE "${${var}}" )
set ( ${ var } "${CMAKE_INSTALL_PREFIX}/${${var}}" )
endif ( )
endif ( )
endforeach ( )
configure_file (
" $ { C M A K E _ C U R R E N T _ L I S T _ D I R } / s r c / v e r s i o n . h . i n "
" $ { C M A K E _ C U R R E N T _ L I S T _ D I R } / s r c / v e r s i o n . h "
)
# l o o k f o r a l l * . h f i l e s i n s r c f o l d e r
file ( GLOB headers "${CMAKE_CURRENT_LIST_DIR}/src/*.h" )
@ -222,12 +192,14 @@ file(GLOB headers "${CMAKE_CURRENT_LIST_DIR}/src/*.h")
list ( APPEND headers
$ { C M A K E _ C U R R E N T _ L I S T _ D I R } / i n c l u d e / d a r k n e t . h
)
# r e m o v e w i n d o w s o n l y f i l e s , w i l l b e r e - a d d e d i f n e c e s s a r y l a t e r
list ( REMOVE_ITEM headers
$ { C M A K E _ C U R R E N T _ L I S T _ D I R } / s r c / g e t t i m e o f d a y . h
$ { C M A K E _ C U R R E N T _ L I S T _ D I R } / s r c / g e t o p t . h
)
set ( exported_headers ${ headers } )
# r e m o v e w i n d o w s o n l y f i l e s
if ( NOT WIN32 )
list ( REMOVE_ITEM headers
$ { C M A K E _ C U R R E N T _ L I S T _ D I R } / s r c / g e t t i m e o f d a y . h
$ { C M A K E _ C U R R E N T _ L I S T _ D I R } / s r c / g e t o p t . h
)
endif ( )
# set ( exported_headers ${ headers } )
# l o o k f o r a l l * . c f i l e s i n s r c f o l d e r
file ( GLOB sources "${CMAKE_CURRENT_LIST_DIR}/src/*.c" )
@ -240,107 +212,140 @@ list(APPEND sources
list ( REMOVE_ITEM sources
$ { C M A K E _ C U R R E N T _ L I S T _ D I R } / s r c / d a r k n e t . c
)
# r e m o v e w i n d o w s o n l y f i l e s , w i l l b e r e - a d d e d i f n e c e s s a r y l a t e r
list ( REMOVE_ITEM sources
$ { C M A K E _ C U R R E N T _ L I S T _ D I R } / s r c / g e t t i m e o f d a y . c
$ { C M A K E _ C U R R E N T _ L I S T _ D I R } / s r c / g e t o p t . c
)
if ( ENABLE_CUDA )
file ( GLOB cuda_sources "${CMAKE_CURRENT_LIST_DIR}/src/*.cu" )
endif ( )
if ( WIN32 )
list ( APPEND sources
# r e m o v e w i n d o w s o n l y f i l e s
if ( NOT WIN32 )
list ( REMOVE_ITEM sources
$ { C M A K E _ C U R R E N T _ L I S T _ D I R } / s r c / g e t t i m e o f d a y . c
$ { C M A K E _ C U R R E N T _ L I S T _ D I R } / s r c / g e t o p t . c
)
endif ( )
list ( APPEND headers
$ { C M A K E _ C U R R E N T _ L I S T _ D I R } / s r c / g e t t i m e o f d a y . h
$ { C M A K E _ C U R R E N T _ L I S T _ D I R } / s r c / g e t o p t . h
)
if ( ENABLE_CUDA )
file ( GLOB cuda_sources "${CMAKE_CURRENT_LIST_DIR}/src/*.cu" )
endif ( )
set_source_files_properties ( ${ sources } PROPERTIES LANGUAGE CXX )
# set_source_files_properties ( ${ sources } PROPERTIES LANGUAGE CXX )
add_library ( darklib ${ CMAKE_CURRENT_LIST_DIR } /include/yolo_v2_class.hpp ${ CMAKE_CURRENT_LIST_DIR } /src/yolo_v2_class.cpp ${ sources } ${ headers } ${ cuda_sources } )
set_target_properties ( darklib PROPERTIES POSITION_INDEPENDENT_CODE ON )
add_library ( dark ${ CMAKE_CURRENT_LIST_DIR } /include/yolo_v2_class.hpp ${ CMAKE_CURRENT_LIST_DIR } /src/yolo_v2_class.cpp ${ sources } ${ headers } ${ cuda_sources } )
set_target_properties ( dark PROPERTIES POSITION_INDEPENDENT_CODE ON )
if ( ENABLE_CUDA )
set_target_properties ( darklib PROPERTIES CUDA_SEPARABLE_COMPILATION ON )
set_target_properties ( dark PROPERTIES CUDA_SEPARABLE_COMPILATION ON )
endif ( )
target_compile_definitions ( darklib PRIVATE LIB_EXPORTS=1 )
set_target_properties ( darklib PROPERTIES LINKER_LANGUAGE CXX )
if ( BUILD_SHARED_LIBS )
target_compile_definitions ( dark PRIVATE LIB_EXPORTS=1 )
endif ( )
# set_target_properties ( dark PROPERTIES LINKER_LANGUAGE CXX )
if ( OpenCV_FOUND AND OpenCV_VERSION VERSION_GREATER "3.0" AND NOT SKIP_USELIB_TRACK )
add_executable ( uselib_track ${ CMAKE_CURRENT_LIST_DIR } /src/yolo_console_dll.cpp )
target_compile_definitions ( uselib_track PRIVATE TRACK_OPTFLOW=1 )
set_target_properties ( uselib_track PROPERTIES LINKER_LANGUAGE CXX )
target_include_directories ( uselib_track PUBLIC $< BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include > $< BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/src > $< INSTALL_INTERFACE:include > $< BUILD_INTERFACE:${Stb_INCLUDE_DIR} > )
target_link_libraries ( uselib_track PRIVATE ${ OpenCV_LIBS } )
endif ( )
add_executable ( uselib ${ CMAKE_CURRENT_LIST_DIR } /src/yolo_console_dll.cpp )
set_target_properties ( uselib PROPERTIES LINKER_LANGUAGE CXX )
# set_target_properties ( uselib PROPERTIES LINKER_LANGUAGE CXX )
add_executable ( darknet ${ CMAKE_CURRENT_LIST_DIR } /src/darknet.c ${ sources } ${ headers } ${ cuda_sources } )
set_source_files_properties ( ${ CMAKE_CURRENT_LIST_DIR } /src/darknet.c PROPERTIES LANGUAGE CXX )
set_target_properties ( darknet PROPERTIES LINKER_LANGUAGE CXX )
# set_source_files_properties ( ${ CMAKE_CURRENT_LIST_DIR } /src/darknet.c PROPERTIES LANGUAGE CXX )
# set_target_properties ( darknet PROPERTIES LINKER_LANGUAGE CXX )
target_include_directories ( darknet PUBLIC $< BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include > $< BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/src > $< INSTALL_INTERFACE:${DARKNET_INSTALL_INCLUDE_DIR} > $< BUILD_INTERFACE:${Stb_INCLUDE_DIR} > )
target_include_directories ( dark PUBLIC $< BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include > $< BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/src > $< INSTALL_INTERFACE:${DARKNET_INSTALL_INCLUDE_DIR} > $< BUILD_INTERFACE:${Stb_INCLUDE_DIR} > )
target_include_directories ( uselib PUBLIC $< BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include > $< BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/src > $< INSTALL_INTERFACE:${DARKNET_INSTALL_INCLUDE_DIR} > $< BUILD_INTERFACE:${Stb_INCLUDE_DIR} > )
target_include_directories ( darknet PUBLIC $< BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include > $< BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/src > $< INSTALL_INTERFACE:include > $< BUILD_INTERFACE:${Stb_INCLUDE_DIR} > )
target_include_directories ( darklib PUBLIC $< BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include > $< BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/src > $< INSTALL_INTERFACE:include > $< BUILD_INTERFACE:${Stb_INCLUDE_DIR} > )
target_include_directories ( uselib PUBLIC $< BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include > $< BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/src > $< INSTALL_INTERFACE:include > $< BUILD_INTERFACE:${Stb_INCLUDE_DIR} > )
target_compile_definitions ( darknet PRIVATE -DUSE_CMAKE_LIBS )
target_compile_definitions ( dark PRIVATE -DUSE_CMAKE_LIBS )
target_compile_definitions ( uselib PRIVATE -DUSE_CMAKE_LIBS )
if ( CUDNN_FOUND )
target_link_libraries ( darknet PRIVATE CuDNN::CuDNN )
target_link_libraries ( darklib PRIVATE CuDNN::CuDNN )
target_link_libraries ( dark PRIVATE CuDNN::CuDNN )
target_compile_definitions ( darknet PRIVATE -DCUDNN )
target_compile_definitions ( dark PUBLIC -DCUDNN )
if ( ENABLE_CUDNN_HALF )
target_compile_definitions ( darknet PRIVATE -DCUDNN_HALF )
target_compile_definitions ( dark PUBLIC -DCUDNN_HALF )
endif ( )
endif ( )
if ( OpenCV_FOUND )
target_link_libraries ( darknet PRIVATE ${ OpenCV_LIBS } )
target_link_libraries ( uselib PRIVATE ${ OpenCV_LIBS } )
target_link_libraries ( darklib PRIVATE ${ OpenCV_LIBS } )
target_link_libraries ( dark PRIVATE ${ OpenCV_LIBS } )
target_compile_definitions ( darknet PRIVATE -DOPENCV )
target_compile_definitions ( dark PUBLIC -DOPENCV )
endif ( )
if ( OPENMP_FOUND )
target_link_libraries ( darknet PRIVATE OpenMP::OpenMP_CXX )
target_link_libraries ( darklib PRIVATE OpenMP::OpenMP_CXX )
target_link_libraries ( darknet PUBLIC OpenMP::OpenMP_CXX )
target_link_libraries ( darknet PUBLIC OpenMP::OpenMP_C )
target_link_libraries ( dark PUBLIC OpenMP::OpenMP_CXX )
target_link_libraries ( dark PUBLIC OpenMP::OpenMP_C )
endif ( )
if ( CMAKE_COMPILER_IS_GNUCC )
target_link_libraries ( darknet PRIVATE m )
target_link_libraries ( darklib PRIVATE m )
target_link_libraries ( dark PRIVATE m )
endif ( )
if ( MSVC )
target_link_libraries ( darknet PRIVATE PThreads_windows::PThreads_windows )
target_link_libraries ( darknet PRIVATE wsock32 ws2_32 )
target_link_libraries ( darklib PRIVATE PThreads_windows::PThreads_windows )
target_link_libraries ( darklib PRIVATE wsock32 ws2_32 )
target_link_libraries ( dark PRIVATE PThreads_windows::PThreads_windows )
target_link_libraries ( dark PRIVATE wsock32 ws2_32 )
target_compile_definitions ( darknet PRIVATE -D_CRT_RAND_S -DNOMINMAX -D_USE_MATH_DEFINES )
target_compile_definitions ( dark PRIVATE -D_CRT_RAND_S -DNOMINMAX -D_USE_MATH_DEFINES )
target_compile_definitions ( uselib PRIVATE -D_CRT_RAND_S -DNOMINMAX -D_USE_MATH_DEFINES )
endif ( )
target_link_libraries ( darknet PRIVATE Threads::Threads )
target_link_libraries ( darklib PRIVATE Threads::Threads )
target_link_libraries ( dark PRIVATE Threads::Threads )
if ( ENABLE_ZED_CAMERA )
target_link_libraries ( darknet PRIVATE ${ ZED_LIBRARIES } )
target_link_libraries ( dark PRIVATE ${ ZED_LIBRARIES } )
target_link_libraries ( uselib PRIVATE ${ ZED_LIBRARIES } )
target_compile_definitions ( darknet PRIVATE -DZED_STEREO )
target_compile_definitions ( uselib PRIVATE -DZED_STEREO )
target_compile_definitions ( dark PRIVATE -DZED_STEREO )
endif ( )
if ( ENABLE_CUDA )
target_include_directories ( darknet PUBLIC ${ CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES } )
target_include_directories ( dark PUBLIC ${ CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES } )
target_link_libraries ( darknet PRIVATE curand cublas cuda )
target_link_libraries ( darklib PRIVATE curand cublas cuda )
set_target_properties ( darklib PROPERTIES CUDA_RESOLVE_DEVICE_SYMBOLS ON )
target_link_libraries ( dark PRIVATE curand cublas cuda )
set_target_properties ( dark PROPERTIES CUDA_RESOLVE_DEVICE_SYMBOLS ON )
target_compile_definitions ( darknet PRIVATE -DGPU )
target_compile_definitions ( dark PUBLIC -DGPU )
endif ( )
if ( USE_INTEGRATED_LIBS )
target_compile_definitions ( darknet PRIVATE -D_TIMESPEC_DEFINED )
target_compile_definitions ( dark PRIVATE -D_TIMESPEC_DEFINED )
endif ( )
target_link_libraries ( uselib PRIVATE darklib )
target_link_libraries ( uselib PRIVATE dark )
if ( OpenCV_FOUND AND OpenCV_VERSION VERSION_GREATER "3.0" AND NOT SKIP_USELIB_TRACK )
target_link_libraries ( uselib_track PRIVATE darklib )
target_link_libraries ( uselib_track PRIVATE dark )
target_compile_definitions ( uselib_track PRIVATE TRACK_OPTFLOW=1 )
target_compile_definitions ( uselib_track PRIVATE -DUSE_CMAKE_LIBS )
# set_target_properties ( uselib_track PROPERTIES LINKER_LANGUAGE CXX )
target_include_directories ( uselib_track PRIVATE ${ CMAKE_CURRENT_LIST_DIR } /include )
target_link_libraries ( uselib_track PRIVATE ${ OpenCV_LIBS } )
if ( ENABLE_ZED_CAMERA )
target_link_libraries ( uselib_track PRIVATE ${ ZED_LIBRARIES } )
target_compile_definitions ( uselib_track PRIVATE -DZED_STEREO )
endif ( )
if ( MSVC )
target_compile_definitions ( uselib_track PRIVATE -D_CRT_RAND_S -DNOMINMAX -D_USE_MATH_DEFINES )
endif ( )
endif ( )
set_target_properties ( darklib PROPERTIES PUBLIC_HEADER "${exported_headers};${CMAKE_CURRENT_LIST_DIR}/include/yolo_v2_class.hpp" )
# set_target_properties ( dark PROPERTIES PUBLIC_HEADER "${exported_headers};${CMAKE_CURRENT_LIST_DIR}/include/yolo_v2_class.hpp" )
set_target_properties ( dark PROPERTIES PUBLIC_HEADER "${CMAKE_CURRENT_LIST_DIR}/include/darknet.h;${CMAKE_CURRENT_LIST_DIR}/include/yolo_v2_class.hpp" )
set_target_properties ( dark PROPERTIES CXX_VISIBILITY_PRESET hidden )
install ( TARGETS darklib EXPORT DarknetTargets
install ( TARGETS dark EXPORT DarknetTargets
R U N T I M E D E S T I N A T I O N " $ { I N S T A L L _ B I N _ D I R } "
L I B R A R Y D E S T I N A T I O N " $ { I N S T A L L _ L I B _ D I R } "
A R C H I V E D E S T I N A T I O N " $ { I N S T A L L _ L I B _ D I R } "