上下文:我正在关注this guide以使用Point Cloud Library PCL生成我的Visual Studio项目,这似乎是使用它的唯一方法。
问题:我已经意识到使用这种方法我不能包含其他库,比如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;
抛出&#34; 错误C2065&#39;字符串&#39;:未声明的标识符&#34; 其他图书馆也是如此。
任何解决方案?
答案 0 :(得分:3)
这是(基本的)C ++知识,与构建系统的任何部分无关。
const dateString = v => {
if (isNaN(v)) return;
let parsedDate = new Date(v);
let adjustedDate = new Date(parsedDate.getTime() - parsedDate.getTimezoneOffset() * 60000);
return adjustedDate;
};
<DateInput source="your_date" parse={dateString} />
引入C ++标准库,特别是容器#include <string>
。只要您的编译器知道您正在编译C ++(并且Visual Studio从std::string
文件扩展名中知道这一点),它就会自动为您链接一个版本的C ++标准库。
您对C ++标准库的这些部分的所有调用都需要以.cpp
为前缀,或者您需要在代码中的某处std::
(尽管通常不建议使用第二个)。
换句话说,请删除using namespace std;
,因为您在原始CMakeLists.txt文件中不存在(并且也没有任何意义),并在源代码中使用${string}
等。
对于std::string
,您需要指明在哪里找到它。如果它是PCL的一部分,那应该已经有效了。
如果它是一个不同的库,您将需要学习CMake的基础知识来添加这些库。提示:CMake命令Bitmap_image.hpp
和add_library()
以及target_include_directories()
。此外,target_link_libraries()
和target_compile_options()
可能很有用。
对CMake的一个很好的现代介绍是Daniel Pfeifer。