将 g++ 代码翻译成 clion 环境

translate g++ code to clion environment

我是 clion 的新人。在 gcc 上我总是使用:

g++  bin/obj/main.o -o bin/main -lboost_filesystem -lboost_system -lcrypto

clion怎么操作?

我的 CMakeList 似乎不起作用:

cmake_minimum_required(VERSION 3.1)
project(motion_simulation)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

set(SOURCE_FILES main.cpp)
add_executable(motion_simulation ${SOURCE_FILES})
link_libraries(lboost_filesystem)
link_libraries(lboost_system)
link_libraries(lcrypto)

下次尝试在搜索中包含关键字 "CMake"。这个问题实际上不是 CLion 特定的,因为 CLion 实际上使用 CMake 作为构建系统。 CMake 有很好的文档记录,您应该能够找到很多关于您的问题的答案。

您可以先尝试摆脱那个 "l":

link_libraries(boost_filesystem)

如果这不起作用,您应该查看 find_package() 命令的工作原理。 http://www.cmake.org/Wiki/CMake:How_To_Find_Libraries

此处详细说明了如何查找 Boost 库和包含目录。 http://www.cmake.org/cmake/help/v3.0/module/FindBoost.html

当您使用 CMake 3.1 时,您可以使用 CMake 的一些更高级的功能。

使用 CMAKE_CXX_STANDARD 你可以 select 你想使用哪个 C++ 版本,CMake 将 select 相应的编译器标志(参见 docs)。

link_libraries是一种可能,但必须在add_executableadd_library之前调用。替代方案是 target_link_libraries,它仅链接到单个目标,但也可以管理传递依赖项 (docs)。

CMake 为 OpenSSL 和 Boost 提供了 find_package 模块来查找依赖项和选项 REQUIRED,您可以确保在系统上找到它们。 Boost 还支持 COMPONENTS 到 select 您需要的库。

如果您曾经在 /usr/ 中未安装 OpenSSL 和 Boost 的系统上工作,您已经可以使用 target_include_directories 指定可执行文件 headers 的位置成立。与 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})