wfxr
9/15/2016 - 2:02 AM

googletest-on-clion.md

GoogleTest 在 CLion (JetBrains 的跨平台 C++ IDE) 中使用和配置


安装CLion

安装CLion很简单,流程和JetBrains的其他IDE基本是一样的,只是最后需要配置一下工具链。我使用的是Cygwin。

安装Cygwin

安装Cygwin的教程网上有很多,cmakemakegcc/clang, gdb/lldb这些是必须要安装的组件。

编译安装GoogleTest

打开Cygwin,找一个合适的位置,将GoogleTest的最新源码克隆到本地,然后进行编译和安装。

git clone https://github.com/google/googletest.git
cd googletest/googletest
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_CXX_FLAGS="-std=c++14" ..

因为默认的安装位置/usr/local不在链接器的默认搜索路径中,-DCMAKE_INSTALL_PREFIX=/usr是为了将安装位置设为/usr

也可以将其加入链接器的搜索路径,就可以使用默认的安装路径了。

需要注意的是,如果CLion中要使用clang而不是gcc,则在编译GoogleTest的时候也要使用clang:

在cmake命令中添加: -D CMAKE_CXX_COMPILER=clang++ -D CMAKE_C_COMPILER=clang -DCMAKE_CXX_FLAGS="-std=c++14 -stdlib=libc++" -DCMAKE_EXE_LINKER_FLAGS=-lc++abi 即可(也可以不指定stdlib,但测试的c++项目也不能使用libc++

编写CMakeLists

新建一个C++ project,假设将源代码和测试代码分别放在srctest中。

CMakeLists.txt

cmake_minimum_required(VERSION 3.6)
project(MyProject)

include_directories(${PROJECT_SOURCE_DIR}/src)

#使用clang作为编译器(需要保证GoogleTest使用相同的编译器编译的)
SET(CMAKE_C_COMPILER /usr/bin/clang)
SET(CMAKE_CXX_COMPILER /usr/bin/clang++)
#如果使用的是gcc编译器(默认选项),需要将'-std=c++14'改为'-std=gnu++14'
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Werror -std=c++14")

add_subdirectory(src)
add_subdirectory(test)

src/CMakeLists.txt

cmake_minimum_required(VERSION 3.6)

add_library(xxx xxx.cpp)

test/CMakeLists.txt

cmake_minimum_required(VERSION 3.3)

find_package(GTest REQUIRED)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")

add_executable(test_xxx test_xxx.cpp)
target_link_libraries(test_xxx gtest)