2017-07-06 76 views
1

上下文:我跟随this guide生成我的Visual Studio项目与点云库PCL,它似乎是唯一的方式来使用它。(CMake)PCL +其他库

问题:我已经意识到,用这种方法,我不能包括其他库,如Bitmap_image.hpp甚至

我已经试过string.h中:

cmake_minimum_required(VERSION 2.6 FATAL_ERROR) 
project(MY_GRAND_PROJECT) 
find_package(PCL 1.3 REQUIRED COMPONENTS common io) 
include_directories(${PCL_INCLUDE_DIRS}) 
link_directories(${PCL_LIBRARY_DIRS}) 
add_definitions(${PCL_DEFINITIONS}) 
add_executable(pcd_write_test pcd_write.cpp) 
target_link_libraries(pcd_write_test ${PCL_COMMON_LIBRARIES} ${PCL_IO_LIBRARIES} ${string}) 

结果:

它生成项目。 PCL完美地工作并且行

#include <string> 

不显示错误。

但是

string a; 

抛出 “错误C2065 '字符串':未声明的标识符” 和与其他库同样的情况。

任何解决方案?

回答

2

这是(基础)C++知识,与构建系统的任何部分无关。

#include <string>拉在C++标准库中,特别是容器std::string。只要您的编译器知道您正在编译C++(并且Visual Studio从.cpp文件扩展名中知道这一点),那么它会自动为您提供一个C++标准库版本。

对C++标准库的这些部分的所有调用都需要以std::为前缀,或者需要代码中的某个地方需要using namespace std;(通常不推荐使用第二个)。

换句话说,除去${string},因为它是不存在的原始的CMakeLists.txt文件你是以下(也没什么意思),并在源代码中使用std::string

至于Bitmap_image.hpp,你需要指出在哪里找到它。如果它是PCL的一部分,那么它应该已经工作了。

如果它是一个不同的库,你需要学习CMake的基础知识来添加这些库。提示:CMake命令add_library()target_include_directories()target_link_libraries()。此外,target_compile_options()target_compile_definitions()可能会有用。

CMake的一个很好的现代介绍是Daniel Pfeifer