为方便查阅,此文是原网站文档翻译,如有侵权,请与本人联系。
官网
当你开发一个C++项目时并想用Chrono API,你需要做:
- 在编译时包含必要的.h头。
- 在链接时链接必要的静态库。
- 在运行时动态链接必要的动态链接库。
如下图所示
如果使用CMake构建程序,这个过程大部分可以自动执行。
CMake路径并不是唯一的选项。例如,您可以通过在IDE设置中手动插入库来将Chrono库添加到C++项目中。然而,这里描述的方法是我们在大多数情况下建议的方法,因为它是独立于平台的,因为它借鉴了CMake构建工具。
1)检查必须项:
- 在电脑上必须已经安装CMake
- 在电脑上必须安装和构建Chrono
2)创建项目文件夹
复制template_project
文件夹到某一位置并重命名,比如从C:\workspace\chrono\template_project
复制到C:\workspace\my_project
这将是您放置源代码的目录。
3)编辑CMake脚本
- 在临时文件夹已经存在一个CMakeLists.txt脚本,将被CMake使用。也可以编辑他,见下文。
比如,假设你想使用POSTPROCESS 模块,你可以编辑CMakeLists.txt,在
find_package(Chrono
COMPONENTS Irrlicht
CONFIG)
添加需要的模块
find_package(Chrono
COMPONENTS Irrlicht Postprocess
CONFIG)
其他的模块同样如此。可以使用的模块有Cascade
,Cosimulation
,FSI
,Granular
,Irrlicht
,Matlab
,MKL
,MUMPS
,OpenGL
,Parallel
,Postprocess
,Python
,Vehicle
。语法是大小写不敏感的,换句话说,OpenGL
,OPENGL
或者opengl
都是相同的组件名字。
还请注意,Chrono模块可以根据需要(在COMPONENT
选项之后)或可选(在OPTIONAL_COMPONENTS
之后)列出,如下例所示
find_package(Chrono
COMPONENTS Irrlicht
OPTIONAL_CONPONENTS Postprocess
CONFIG)
在前一案例中,如果Chrono未配置并构建为启用所需模块之一,则CMake处理将停止。在后面的案例CMake处理将继续。当将Chrono模块列为可选组件时,用户有责任在其项目代码中适当检查Chrono模块是否真的可用;例如,通过使用在ChConfig.h
中定义的宏(CHRONO_RRLICHT
、CHRONO_POSTPROCESS
等),这些宏是为启用的模块定义的。有关更多详细信息,请参阅find_package
及其“配置模式”的CMake文档。
如果您希望将默认my_example.cpp的名称更改为更有意义的名称,例如my_simuator.cpp,只需重命名该文件,然后更改行
add_executable(myexe my_example.cpp)
为add_executable(myexe my_simulator.cpp)
。
如果您的程序被拆分为多个.cpp源,只需在此行中列出它们:add_executable(myexe my_simulator.cpp my_foo_source.cpp my_bar_source.cpp)
从2017 15.8版本开始,Visual Studio已经改变了对对齐内存分配的处理方式。要正确处理具有成员固定大小可向量化特征对象的类的对齐内存分配,请确保您的CMakeLists.txt保留第104-108行:
if(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
if(MSVC AND ${MSVC_VERSION} GREATER_EQUAL 1915)
add_definitions( "-D_ENABLE_EXTENDED_ALIGNED_STORAGE" )
endif()
endif()
使用条件定义_ENABLE_EXTENDED_ALIGNED_STORAGE
4) 启动CMake
- 启动CMake GUI
- 使用**Browse source…**通过设置您创建的源目录
C:/workspace/my_project
- 使用 Browse build… 通过为输出项目设置一个新的空目录,例如
C:/workspace/my_project_build
。
5) 配置
- 按下CMake中的Configure 按钮
- 当提示选择生成器时,请选择用于编译Chrono的同一编译器;
- 重要提示:设置
Chrono_DIR
变量。这是您在构建Chrono的目录中找到的cmake目录。在我们的例子中C:/workspace/chrono_build/cmake
- 再次按下Configure 按钮
6) 生成项目
按下CMake中的Generate按钮。将在生成目录中创建一个项目。在我们的示例中,您可以在C:/workspace/my_project_build
7) 编译项目
如果您在CMake中使用Visual Studio生成器,
- 在Visual Studio编辑器中打开解决方案(在我们的示例中双击
C:\workspace\my_project_build\my_project.sln
) - 使用VisualStudio工具栏中的下拉列表将Debug模式更改为 Release 模式
- 使用菜Build > Build solution… 以进行编译和链接。
如果您在CMake中使用Unix makefile生成器(例如在Linux中),您可以打开一个shell,cd到构建目录中,然后调用make:
cd /home/john/my_project_build
make
8) 运行您的程序
默认情况下,您项目的所有二进制文件(例如myexe.exe)都将进入您的构建目录,在我们的示例中C:\workspace\my_project_build\Release
或者调试模式下的C:\workspace\my_project_build\Debug
双击.exe文件,您应该会看到演示在交互式三维视图中运行
Windows用户的重要信息
如果你是Windows用户,你的项目可执行文件需要知道在哪里可以找到Chrono共享库(即扩展名为.dll的库),否则一旦你尝试运行它们,它们就会崩溃。
为了简单起见,我们添加了一个辅助CMake目标(即COPY_DLLS),它在项目二进制文件文件夹中复制Chrono DLL(以及其他DLL依赖项,如Irrlicht共享库,视情况而定)C:\workspace\my_project_build\Release
有两种不同的情况:
Chrono_DIR
是一个构建文件夹;如果您遵循了我们的安装指南,那么C:/workspace/cochroon_build
就是这种类型的;在这种情况下,您可能同时拥有Chrono的Release和Debug版本(位于C:\workspace/cochroon_build/bin
下);如果两者都存在,请注意,只会复制Release库;如果要在“调试”配置中运行项目,则必须手动将包含在C:\workspace/cochroon_build/bin/Debug
中的调试库复制到C:\workspace/my_project_build/Debug
中Chrono_DIR
是一个安装文件夹;这是通过构建INSTALL
目标创建的文件夹类型;该文件夹通常是C:\Program Files\Chrono
,包含调试库或发布库,具体取决于您在构建INSTALL
目标时设置的配置。
Linux用户不必担心复制共享库,因为.so库总是进入全局可见的目录中。
使用 Chrono::Sensor时的重要信息
注意:如果从外部项目链接到Chrono::Sensor安装,请确保设置着色器代码(编译的ptx代码或着色器/*.cu文件)所在的安装位置目录。这应该设置在任何将从安装位置使用Chrono::Sensor的外部代码的顶部。
//function to set the shader location (include ChOptixUtils.h)
chrono::sensor::SetSensorShaderDir("path/to/sensor/shaders");
//if USE_CUDA_NVRTC is enabled, use
chrono::sensor::SetSensorShaderDir("path/to/install/include/chrono_sensor/optix/shaders/");
//if USE_CUDA_NVRTC is disabled, use
chrono::sensor::SetSensorShaderDir("path/to/install/lib/sensor_ptx/");
欢迎交流,一起学习,QQ群:902809729