当您使用 CMake 3.1 时,您可以使用 CMake 的一些更高级的功能。
CMAKE_CXX_STANDARD
您可以选择要使用的 C++ 版本,CMake 将选择相应的编译器标志(请参阅文档)。
link_libraries
是一种可能性,但必须在add_executable
or之前调用add_library
。另一种方法是target_link_libraries
仅链接到单个目标,但也可以管理传递依赖项(docs)。
CMake 带有find_package
用于 OpenSSL 和 Boost 的模块以查找依赖项,并且通过选项REQUIRED
,您可以确保在系统上找到它们。Boost 还支持COMPONENTS
选择您需要的库。
如果您曾经在未安装 OpenSSL 和 Boost 的系统上工作/usr/
,您已经可以使用它target_include_directories
来指定可执行文件的标头所在的位置。就像target_link_libraries
,target_include_directories
可以使用传递依赖,在这种情况下PRIVATE
.
cmake_minimum_required(VERSION 3.1)
project(motion_simulation)
set(CMAKE_CXX_STANDARD 11)
find_package(Boost REQUIRED COMPONENTS filesystem system)
find_package(OpenSSL REQUIRED)
set(SOURCE_FILES main.cpp)
add_executable(motion_simulation ${SOURCE_FILES})
target_include_directories(motion_simulation PRIVATE ${Boost_INCLUDE_DIRS} ${OPENSSL_INCLUDE_DIR})
target_link_libraries( motion_simulation PRIVATE ${Boost_LIBRARIES} ${OPENSSL_LIBRARIES})