将 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_executable
或add_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})
我是 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_executable
或add_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})