如果要在caffe中构建自定义文件,有两种方式
简单的方法
- 进行必要的更改并将文件(在您的情况下为-classification.cpp)保存在th的examples文件夹中的目录(例如test)中
e caffe 根目录。
- 运行
make。这将自动添加必要的 cxxflags 和 ldflags 并编译您的代码并将可执行文件放在 build/examples/test 文件夹中。这也确保设置了标志 CPU_ONLY(如 Makefile.config 中所述)
艰难的路
- 在没有漂亮打印选项的情况下运行 make(在 Makefile.config 中提到)。您将能够看到用于构建示例和工具的编译和链接选项。您可以复制并粘贴这些选项(如果使用,还可以对相对路径进行必要的更改)来编译您的文件
希望对你有帮助
编辑
由于操作要求一种简单的方法,可以如下完成
这是一个非常最小的示例,我鼓励 OP 参考完整的在线文档和 cmake 使用示例。
- 要求
- Caffe 需要使用 cmake 构建 - 相对容易,因为当前的 master 分支已经定义了 CMakeLists 和所有内容。使用 Cmake-gui 或 ccmake 设置您的选项
现在,我假设您的项目结构如下。
-project
- src
- class1.cpp
- CMakeLists.txt ( to be added )
- include
- class1.hpp
- main.cpp
- CMakeLists.txt ( to be added )
CMakeLists.txt ( src ) 需要包含(至少)以下几行,
cmake_minimum_required(VERSION 2.8)
find_package(OpenCV REQUIRED) # Optional in case of dependency on opencv
add_library( c1 class1.cpp )
注意:如果 class1 依赖于其他外部库,则必须使用 include_directories 包含头文件的路径。
CMakeLists.txt(最外层)需要在最少
处包含以下内容
cmake_minimum_required(VERSION 2.8)
PROJECT(MyProject)
find_package(OpenCV REQUIRED)
find_package(Caffe REQUIRED)
include_directories( "${PROJECT_SOURCE_DIR}/include" )
add_subdirectory( src )
include_directories( "$Caffe_INCLUDE_DIRS}" )
add_executable(MyProject main.cpp)
target_link_libraries( MyProject ${OpenCV_LIBS} c1 ${Caffe_LIBRARIES} )
现在,项目目录中的以下命令将在build 文件夹中创建可执行文件MyProject。
mkdir build
cd build
cmake ..
make
然后您可以使用./MyProject (arguments) 运行您的程序
编辑 2
满足使用 CMake 构建 caffe 的要求对于此工作非常重要。您需要使用 CMake 配置和生成 Makefile。为此目的使用cmake-gui 或ccmake,以便您可以设置您的选项,如CPU_ONLY 等。
您应该在 caffe 中创建一个构建目录并执行以下基本设置
mkdir build
cd build
cmake ..
make -jX #X is the number of threads your CPU can handle
现在,$HOME 文件夹中的 .cmake 目录包含以下内容
/home/user/.cmake/packages/Caffe/<random_string> 文件。该文件指向caffe的安装位置(也就是我们的构建目录)
现在,对于您的其他项目,find_package 命令应该可以正常运行。而且由于您使用的是 CMake,您可以将项目文件夹保留在 Caffe 文件夹之外(最好将其保留在外部,因为 caffe 的制作过程会尝试构建您的文件但它会失败)
注意:如果错误仍然存在,您可以在 cmake 配置过程中手动设置 Caffe_DIR。