cudnn狞换,一定要選擇最老的版本,否則就會報錯(真坑裕坊,誰能想到)
cmake簡介:https://www.huaweicloud.com/articles/ca75903dbb357a87c340fbfcd6b6dfe6.html
cmake 官方文檔:https://cmake.org/cmake/help/v3.21/#reference-manuals
由于C++ 編譯經(jīng)驗不足包竹,這一塊著實,讓我懷疑人生籍凝。無奈之下周瞎,我最終卸載了 CUDA11.4 安裝了 CUDA7.5,然后竟然就很順利的編譯完成了饵蒂。(終究声诸,還是需要吧 cmake弄明白,使用 CUDA11.4 來 編譯 caffe 的官方源碼退盯,這樣才能彼乌,進行caffe 的定制 并 編譯得到 caffe的 定制版本)
編譯 和? 多文件 編譯
VS 使用 cl 編譯器 (cl 類似于 gcc? 和 clang 編譯器泻肯,cl位于 C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin)
vs中,一個編譯單元 就是 一個 cpp文件慰照。有cpp文件 得到 .o文件软免,之后 編譯器會根據(jù) 參數(shù)的選擇 來生成 不同的結(jié)果(包括 .exe可執(zhí)行文件、lib靜態(tài)庫焚挠、dll動態(tài)庫)
舉個 gcc的編譯命令 gcc main.cpp -o main 膏萧。(不同的編譯器 有自己跌 命令規(guī)范)
gcc? 常用的 -i? -l? (i 是? include? l 是 link)
cmake 用于 自動生成 編譯命令(cmake 以 cmakelist.txt 作為輸入,并輸出makefile,然后 使用makefile 來指導編譯器進行 編譯操作。)
cmakelist.txt 里 定義了 一些 鏈接的操作蝌衔,編譯器 在鏈接 階段 實際上是 根據(jù) cmakelist.txt 中的定義 來進行鏈接的榛泛。
vs 的編譯器 底層 也是調(diào)用了 nmake? ? ? ? ? ? ? ? ??
不同的編譯器,會對 cpp 文件 進行 重整 (就是 會有一個 包含 cpp 名字 返回類型 輸入?yún)?shù)? 要生成的文件類型? 等的一條 復雜的長語句噩斟。形如 gcc add.cppp ..? ... ...? ?...? .lib) 曹锨。不能將 不同編譯器 得到的文件 ,進行鏈接剃允,因為沛简,不同的編譯器 會 生成 不同語法的? 重整文件 ,這樣斥废,會出現(xiàn)鏈接錯誤椒楣。
在編譯的過程中,編譯器會打印沒一條編譯命令(也就是 每一個操作)牡肉,在報錯的時候捧灰,可以一條一條的分析,看是 在 編譯的那個階段 除了錯统锤,然后再 去相應的地方 查找和修改錯誤毛俏。
cmake 常用的 10條指令邓深,幾乎可以解決 日常的所有問題劳闹。
在cmake中 -l 和 -L 不同纫溃,-L 之后會跟 一個 外部庫 的路徑残揉。
cmake 中 的 find_package() 用于 找包缤骨,find_package(OpenCV) 這條 語句 會 自動到 OpenCV 所在的路徑下 找到 它的 cmakelist.txt 及老,并執(zhí)行它身冬,執(zhí)行完畢后返回當前文件窒舟,繼續(xù)執(zhí)行嘲驾。
cmakelist.txt 是跨平臺的 通用的 編譯入口淌哟。而 vs 怎樣的ide 都是 在cmakelist.txt 基礎(chǔ)上 封裝的得到的編譯入口,因此 這些 ide 不能跨平臺辽故, 只針對當前的系統(tǒng)環(huán)境徒仓。
整個 編譯 過程 可 看做是 四個階段 :cmake 中 含有兩個階段 congfig 用于根據(jù) 語句 計算 各種參數(shù)(這是個根據(jù)代碼來計算的階段), genery 用于 根據(jù) 計算得到的參數(shù) 來生成 makefile (這是個 根據(jù) 計算結(jié)果 來 定義規(guī)則的階段),之后的操作 編譯器 會有兩個階段 編譯 cpp 文件(這是個編譯代碼的階段)誊垢,將 編譯階段 得到的文件 和 其他的 庫或文件進行鏈接(這是個找?guī)斓碾A段)掉弛。
make? install makefile (首先 make執(zhí)行編譯操作症见,然后 install? 根據(jù) makefile中的 install語句 來 執(zhí)行install操作)
cmake文件,總體是 是按照順序執(zhí)行的殃饿。
讀懂下面兩個 cmakelist.txt 文件谋作,很重要,因為這兩個文件乎芳,代表了 cmake的通用語法 遵蚜,并涵蓋了 最常用的一些和語句。
一個自定義的cmakelist.txt (備忘:D:\cmake_test)
project(test)
find_package(OpenCV)
#message(${OpenCV_include_dirs})
#message(${OpenCV_libs})
#opencv_version
include_directories(${OpenCV_include_dirs})
include_directories(add)
add_library(add IMPORT)
add_executable(main main.cpp)
target_link_libraries(main add ${OpenCV_LIBS})
CMD窗口1:
Microsoft Windows [版本 10.0.19041.1052]
(c) Microsoft Corporation奈惑。保留所有權(quán)利吭净。
C:\Users\73525>cmake
Usage
? cmake [options] <path-to-source>
? cmake [options] <path-to-existing-build>
? cmake [options] -S <path-to-source> -B <path-to-build>
Specify a source directory to (re-)generate a build system for it in the
current working directory.? Specify an existing build directory to
re-generate its build system.
Run 'cmake --help' for more information.
C:\Users\73525>cmake --version
cmake version 3.21.0-rc2
CMake suite maintained and supported by Kitware (kitware.com/cmake).
C:\Users\73525>cl
'cl' 不是內(nèi)部或外部命令,也不是可運行的程序
或批處理文件肴甸。
C:\Users\73525> cd C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin>cl
用于 x86 的 Microsoft (R) C/C++ 優(yōu)化編譯器 18.00.30501 版版權(quán)所有(C) Microsoft Corporation寂殉。? 保留所有權(quán)利。
用法: cl [ 選項... ] 文件名... [ /link 鏈接選項... ]
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin>nmake
Microsoft (R) 程序維護實用工具 12.00.21005.1 版
版權(quán)所有 (C) Microsoft Corporation原在。? 保留所有權(quán)利友扰。
NMAKE : fatal error U1064: 未找到 MAKEFILE 并且未指定目標
Stop.
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin>
cmd窗口2:
Microsoft Windows [版本 10.0.19041.1052]
(c) Microsoft Corporation。保留所有權(quán)利庶柿。
C:\Users\73525>cd D:\cmake_test
C:\Users\73525>d:
D:\cmake_test>mkdir build
D:\cmake_test>cd build
D:\cmake_test\build>cmake
Usage
? cmake [options] <path-to-source>
? cmake [options] <path-to-existing-build>
? cmake [options] -S <path-to-source> -B <path-to-build>
Specify a source directory to (re-)generate a build system for it in the
current working directory.? Specify an existing build directory to
re-generate its build system.
Run 'cmake --help' for more information.
D:\cmake_test\build>cmake -G
CMake Error: No generator specified for -G
Generators
? Visual Studio 17 2022? ? ? ? = Generates Visual Studio 2022 project files.
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Use -A option to specify architecture.
? Visual Studio 16 2019? ? ? ? = Generates Visual Studio 2019 project files.
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Use -A option to specify architecture.
? Visual Studio 15 2017 [arch] = Generates Visual Studio 2017 project files.
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Optional [arch] can be "Win64" or "ARM".
? Visual Studio 14 2015 [arch] = Generates Visual Studio 2015 project files.
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Optional [arch] can be "Win64" or "ARM".
* Visual Studio 12 2013 [arch] = Generates Visual Studio 2013 project files.
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Optional [arch] can be "Win64" or "ARM".
? Visual Studio 11 2012 [arch] = Generates Visual Studio 2012 project files.
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Optional [arch] can be "Win64" or "ARM".
? Visual Studio 10 2010 [arch] = Generates Visual Studio 2010 project files.
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Optional [arch] can be "Win64" or "IA64".
? Visual Studio 9 2008 [arch]? = Generates Visual Studio 2008 project files.
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Optional [arch] can be "Win64" or "IA64".
? Borland Makefiles? ? ? ? ? ? = Generates Borland makefiles.
? NMake Makefiles? ? ? ? ? ? ? = Generates NMake makefiles.
? NMake Makefiles JOM? ? ? ? ? = Generates JOM makefiles.
? MSYS Makefiles? ? ? ? ? ? ? = Generates MSYS makefiles.
? MinGW Makefiles? ? ? ? ? ? ? = Generates a make file for use with
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? mingw32-make.
? Green Hills MULTI? ? ? ? ? ? = Generates Green Hills MULTI files
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (experimental, work-in-progress).
? Unix Makefiles? ? ? ? ? ? ? = Generates standard UNIX makefiles.
? Ninja? ? ? ? ? ? ? ? ? ? ? ? = Generates build.ninja files.
? Ninja Multi-Config? ? ? ? ? = Generates build-<Config>.ninja files.
? Watcom WMake? ? ? ? ? ? ? ? = Generates Watcom WMake makefiles.
? CodeBlocks - MinGW Makefiles = Generates CodeBlocks project files.
? CodeBlocks - NMake Makefiles = Generates CodeBlocks project files.
? CodeBlocks - NMake Makefiles JOM
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? = Generates CodeBlocks project files.
? CodeBlocks - Ninja? ? ? ? ? = Generates CodeBlocks project files.
? CodeBlocks - Unix Makefiles? = Generates CodeBlocks project files.
? CodeLite - MinGW Makefiles? = Generates CodeLite project files.
? CodeLite - NMake Makefiles? = Generates CodeLite project files.
? CodeLite - Ninja? ? ? ? ? ? = Generates CodeLite project files.
? CodeLite - Unix Makefiles? ? = Generates CodeLite project files.
? Eclipse CDT4 - NMake Makefiles
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? = Generates Eclipse CDT 4.0 project files.
? Eclipse CDT4 - MinGW Makefiles
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? = Generates Eclipse CDT 4.0 project files.
? Eclipse CDT4 - Ninja? ? ? ? = Generates Eclipse CDT 4.0 project files.
? Eclipse CDT4 - Unix Makefiles= Generates Eclipse CDT 4.0 project files.
? Kate - MinGW Makefiles? ? ? = Generates Kate project files.
? Kate - NMake Makefiles? ? ? = Generates Kate project files.
? Kate - Ninja? ? ? ? ? ? ? ? = Generates Kate project files.
? Kate - Unix Makefiles? ? ? ? = Generates Kate project files.
? Sublime Text 2 - MinGW Makefiles
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? = Generates Sublime Text 2 project files.
? Sublime Text 2 - NMake Makefiles
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? = Generates Sublime Text 2 project files.
? Sublime Text 2 - Ninja? ? ? = Generates Sublime Text 2 project files.
? Sublime Text 2 - Unix Makefiles
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? = Generates Sublime Text 2 project files.
D:\cmake_test\build>cmake -G"Visual Studio 12 2013 Win64" ..
-- The C compiler identification is MSVC 18.0.30501.0
-- The CXX compiler identification is MSVC 18.0.30501.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/bin/x86_amd64/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/bin/x86_amd64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: D:/cmake_test/build
D:\cmake_test\build>cd ..
D:\cmake_test>mkdir build nmakebuild
子目錄或文件 build 已經(jīng)存在村怪。
處理: build 時出錯。
D:\cmake_test>mkdir nmakebuild
子目錄或文件 nmakebuild 已經(jīng)存在澳泵。
D:\cmake_test>cd nmakebuild
D:\cmake_test\nmakebuild>cmake -G"NMake Makefiles" ..
CMake Error at CMakeLists.txt:1 (project):
? Running
? 'nmake' '-?'
? failed with:
? 緋葷粺鎵句笉鍒版寚瀹氱殑鏂囦歡銆
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
-- Configuring incomplete, errors occurred!
See also "D:/cmake_test/nmakebuild/CMakeFiles/CMakeOutput.log".
D:\cmake_test\nmakebuild>namke
'namke' 不是內(nèi)部或外部命令实愚,也不是可運行的程序
或批處理文件。
D:\cmake_test\nmakebuild>nmake
'nmake' 不是內(nèi)部或外部命令兔辅,也不是可運行的程序
或批處理文件。
D:\cmake_test\nmakebuild>cd ..\build\Debug
D:\cmake_test\build\Debug>main.exe
3
D:\cmake_test\build\Debug>main.exe
3
D:\cmake_test\build\Debug>cd ..
D:\cmake_test\build>cd ..
D:\cmake_test>ls
'ls' 不是內(nèi)部或外部命令击喂,也不是可運行的程序
或批處理文件维苔。
D:\cmake_test>dir
驅(qū)動器 D 中的卷是 Data
卷的序列號是 1A5E-4142
D:\cmake_test 的目錄
06/07/2021? 18:58? ? <DIR>? ? ? ? ? .
06/07/2021? 18:58? ? <DIR>? ? ? ? ? ..
06/07/2021? 19:00? ? <DIR>? ? ? ? ? build
06/07/2021? 18:54? ? ? ? ? ? ? ? 46 CMakeLists.txt
06/07/2021? 19:02? ? ? ? ? ? ? 113 main.cpp
06/07/2021? 18:59? ? <DIR>? ? ? ? ? nmakebuild
? ? ? ? ? ? ? 2 個文件? ? ? ? ? ? 159 字節(jié)
? ? ? ? ? ? ? 4 個目錄 214,069,063,680 可用字節(jié)
D:\cmake_test>touch add.cpp
'touch' 不是內(nèi)部或外部命令,也不是可運行的程序
或批處理文件懂昂。
D:\cmake_test>cd build
D:\cmake_test\build>cmake -G"Visual Studio 12 2013 Win64" ..
-- Configuring done
-- Generating done
-- Build files have been written to: D:/cmake_test/build
D:\cmake_test\build>cd Debug
D:\cmake_test\build\Debug>main.exe
3
D:\cmake_test\build\Debug>cd ..
D:\cmake_test\build>cmake -G"Visual Studio 12 2013 Win64" ..
-- Configuring done
-- Generating done
-- Build files have been written to: D:/cmake_test/build
D:\cmake_test\build>cmake -G"Visual Studio 12 2013 Win64" ..
-- Configuring done
-- Generating done
-- Build files have been written to: D:/cmake_test/build
D:\cmake_test\build>cmake -G"Visual Studio 12 2013 Win64" ..
CMake Warning (dev) in CMakeLists.txt:
? No cmake_minimum_required command is present.? A line of code such as
? ? cmake_minimum_required(VERSION 3.21)
? should be added at the top of the file.? The version specified may be lower
? if you wish to support older CMake versions for this project.? For more
? information run "cmake --help-policy CMP0000".
This warning is for project developers.? Use -Wno-dev to suppress it.
-- Configuring done
-- Generating done
-- Build files have been written to: D:/cmake_test/build
D:\cmake_test\build>cd Debug
D:\cmake_test\build\Debug>main.exe
3
D:\cmake_test\build\Debug>
caffe的cmake.list.txt
cmake_minimum_required(VERSION 2.8.7)
if(MSVC)
? # CMake 3.4 introduced a WINDOWS_EXPORT_ALL_SYMBOLS target property that makes it possible to
? # build shared libraries without using the usual declspec() decoration.
? # See: https://blog.kitware.com/create-dlls-on-windows-without-declspec-using-new-cmake-export-all-feature/
? # and https://cmake.org/cmake/help/v3.5/prop_tgt/WINDOWS_EXPORT_ALL_SYMBOLS.html
? # for details.
? cmake_minimum_required(VERSION 3.4)
endif()
if(POLICY CMP0046)
? cmake_policy(SET CMP0046 NEW)
endif()
if(POLICY CMP0054)
? cmake_policy(SET CMP0054 NEW)
endif()
# ---[ Caffe project
project(Caffe C CXX)
# ---[ Caffe version
set(CAFFE_TARGET_VERSION "1.0.0" CACHE STRING "Caffe logical version")
set(CAFFE_TARGET_SOVERSION "1.0.0" CACHE STRING "Caffe soname version")
add_definitions(-DCAFFE_VERSION=${CAFFE_TARGET_VERSION})
# ---[ Using cmake scripts and modules
list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/Modules)
include(ExternalProject)
include(GNUInstallDirs)
include(cmake/Utils.cmake)
include(cmake/Targets.cmake)
include(cmake/Misc.cmake)
include(cmake/Summary.cmake)
include(cmake/ConfigGen.cmake)
include(cmake/WindowsCreateLinkHeader.cmake)
include(cmake/TargetResolvePrerequesites.cmake)
# ---[ Options
caffe_option(CPU_ONLY? "Build Caffe without CUDA support" OFF) # TODO: rename to USE_CUDA
caffe_option(USE_CUDNN "Build Caffe with cuDNN library support" ON IF NOT CPU_ONLY)
caffe_option(USE_NCCL "Build Caffe with NCCL library support" OFF)
if(MSVC)
? # default to static libs
? caffe_option(BUILD_SHARED_LIBS "Build shared libraries" OFF)
else()
? caffe_option(BUILD_SHARED_LIBS "Build shared libraries" ON)
endif()
caffe_option(BUILD_python "Build Python wrapper" ON)
set(python_version "2" CACHE STRING "Specify which Python version to use")
caffe_option(BUILD_matlab "Build Matlab wrapper" OFF)
caffe_option(BUILD_docs? "Build documentation" ON IF UNIX OR APPLE)
caffe_option(BUILD_python_layer "Build the Caffe Python layer" ON)
caffe_option(USE_OPENCV "Build with OpenCV support" ON)
caffe_option(USE_LEVELDB "Build with levelDB" ON)
caffe_option(USE_LMDB "Build with lmdb" ON)
caffe_option(ALLOW_LMDB_NOLOCK "Allow MDB_NOLOCK when reading LMDB files (only if necessary)" OFF)
caffe_option(USE_OPENMP "Link with OpenMP (when your BLAS wants OpenMP and you get linker errors)" OFF)
caffe_option(protobuf_MODULE_COMPATIBLE "Make the protobuf-config.cmake compatible with the module mode" ON IF MSVC)
caffe_option(COPY_PREREQUISITES "Copy the prerequisites next to each executable or shared library directory" ON IF MSVC)
caffe_option(INSTALL_PREREQUISITES "Install the prerequisites next to each executable or shared library directory" ON IF MSVC)
if(MSVC AND BUILD_SHARED_LIBS)
? if(CMAKE_GENERATOR MATCHES "Visual Studio")
? ? # see issue https://gitlab.kitware.com/cmake/cmake/issues/16552#note_215236
? ? message(FATAL_ERROR "The Visual Studio generator cannot build a shared library. Use the Ninja generator instead.")
? endif()
? # Some tests (solver tests) fail when caffe is built as a shared library. The problem comes
? # from protobuf that has a global static empty_string_ variable. Since caffe and test.testbin
? # link to a static protobuf library both end up with their own instance of the empty_string_
? # variable. This causes some SEH exception to occur. In practice if the caffe executable does not link
? # to protobuf this problem should not happen. Use at your own risk.
? message(WARNING "Some tests (solvers) will fail when building as a shared library with MSVC")
endif()
# ---[ Prebuild dependencies on windows
include(cmake/WindowsDownloadPrebuiltDependencies.cmake)
# ---[ Dependencies
include(cmake/Dependencies.cmake)
# ---[ Flags
if(UNIX OR APPLE)
? set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -Wall")
endif()
caffe_set_caffe_link()
if(USE_libstdcpp)
? set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libstdc++")
? message("-- Warning: forcing libstdc++ (controlled by USE_libstdcpp option in cmake)")
endif()
# ---[ Warnings
caffe_warnings_disable(CMAKE_CXX_FLAGS -Wno-sign-compare -Wno-uninitialized)
# ---[ Config generation
configure_file(cmake/Templates/caffe_config.h.in "${PROJECT_BINARY_DIR}/caffe_config.h")
# ---[ Includes
set(Caffe_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/include)
set(Caffe_SRC_DIR ${PROJECT_SOURCE_DIR}/src)
include_directories(${PROJECT_BINARY_DIR})
# ---[ Includes & defines for CUDA
# cuda_compile() does not have per-call dependencies or include pathes
# (cuda_compile() has per-call flags, but we set them here too for clarity)
#
# list(REMOVE_ITEM ...) invocations remove PRIVATE and PUBLIC keywords from collected definitions and include pathes
if(HAVE_CUDA)
? # pass include pathes to cuda_include_directories()
? set(Caffe_ALL_INCLUDE_DIRS ${Caffe_INCLUDE_DIRS})
? list(REMOVE_ITEM Caffe_ALL_INCLUDE_DIRS PRIVATE PUBLIC)
? cuda_include_directories(${Caffe_INCLUDE_DIR} ${Caffe_SRC_DIR} ${Caffe_ALL_INCLUDE_DIRS})
? # add definitions to nvcc flags directly
? set(Caffe_ALL_DEFINITIONS ${Caffe_DEFINITIONS})
? list(REMOVE_ITEM Caffe_ALL_DEFINITIONS PRIVATE PUBLIC)
? list(APPEND CUDA_NVCC_FLAGS ${Caffe_ALL_DEFINITIONS})
endif()
# ---[ Subdirectories
add_subdirectory(src/gtest)
add_subdirectory(src/caffe)
add_subdirectory(tools)
add_subdirectory(examples)
add_subdirectory(python)
add_subdirectory(matlab)
add_subdirectory(docs)
# ---[ Linter target
add_custom_target(lint COMMAND ${CMAKE_COMMAND} -DPYTHON_EXECUTABLE=${PYTHON_EXECUTABLE} -P ${PROJECT_SOURCE_DIR}/cmake/lint.cmake)
# ---[ pytest target
if(BUILD_python)
? if(UNIX)
? ? set(python_executable python${python_version})
? else()
? ? set(python_executable ${PYTHON_EXECUTABLE})
? endif()
? add_custom_target(pytest COMMAND ${python_executable} -m unittest discover -s caffe/test WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/python )
? add_dependencies(pytest pycaffe)
endif()
# ---[ uninstall target
configure_file(
? ? ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Uninstall.cmake.in
? ? ${CMAKE_CURRENT_BINARY_DIR}/cmake/Uninstall.cmake
? ? IMMEDIATE @ONLY)
add_custom_target(uninstall
? ? COMMAND ${CMAKE_COMMAND} -P
? ? ${CMAKE_CURRENT_BINARY_DIR}/cmake/Uninstall.cmake)
# ---[ Configuration summary
caffe_print_configuration_summary()
# ---[ Export configs generation
caffe_generate_export_configs()