如何使用自定义 libc++ 和 clang 设置 CLion IDE?
How to setup CLion IDE with custom libc++ and clang?
CLion 网站说他们支持 "libc++" 但没有关于如何设置 CLion 以使用 libc++ 的信息。我正在使用 Ubuntu 16 并下载了 libc++ 源代码并构建了它。所以我想用这个特定的版本。
这是我目前尝试过的方法:
所以我现在有了 libc++ 二进制文件。然后我创建了简单的 hello world 项目并将其 CMakeLists.txt 更改为使用我的自定义 libc++。但是,当我尝试 运行 项目时,出现错误:
/home/shitals/CLionProjects/JsonTest/cmake-build-debug/JsonTest: error while loading shared libraries: libc++.so.1: cannot open shared object file: No such file or directory
这是我的项目 cmake,强制使用我的自定义 libc++。
cmake_minimum_required(VERSION 3.8)
project(JsonTest)
set(CMAKE_CXX_STANDARD 14)
#libcxx which we will use with specific version of clang
SET(LIBCXX_INC_PATH /home/shitals/mylibc++/include/c++/v1)
SET(LIBCXX_LIB_PATH /home/shitals/mylibc++/lib)
set(CMAKE_C_COMPILER clang-3.9)
set(CMAKE_CXX_COMPILER clang++-3.9)
set(CMAKE_CXX_FLAGS "\
-std=c++14 -ggdb -Wall -Wextra -Wstrict-aliasing -Wunreachable-code -Wcast-qual -Wctor-dtor-privacy \
-Wdisabled-optimization -Wformat=2 -Winit-self -Wmissing-include-dirs -Wswitch-default \
-Wold-style-cast -Woverloaded-virtual -Wredundant-decls -Wshadow -Wstrict-overflow=5 -Wswitch-default -Wundef \
-Wno-variadic-macros -Wno-parentheses -Wno-unused-function -Wno-unused -Wno-documentation -fdiagnostics-show-option -ferror-limit=10 \
-pthread ${CMAKE_CXX_FLAGS}")
set(CMAKE_CXX_FLAGS "\
-nostdinc++ -isystem ${LIBCXX_INC_PATH} \
-D__CLANG__ ${CMAKE_CXX_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "\
${CMAKE_EXE_LINKER_FLAGS} -stdlib=libc++ -lc++ -lc++abi -lm -lc -lgcc_s -lgcc -ldl \
-L ${LIBCXX_LIB_PATH}")
set(SOURCE_FILES main.cpp)
add_executable(JsonTest ${SOURCE_FILES})
我编译的 libc++ 二进制文件确实有 libc++.so.1 文件。
好的...所以下面 CMakeLists.txt 在项目根目录下似乎有效:
cmake_minimum_required(VERSION 3.8)
project(JsonTest)
set(CMAKE_CXX_STANDARD 14)
#libcxx which we will use with specific version of clang
SET(LIBCXX_INC_PATH /home/shitals/GitHubSrc/AirSim/llvm-build/output/include/c++/v1)
SET(LIBCXX_LIB_PATH /home/shitals/GitHubSrc/AirSim/llvm-build/output/lib)
set(CMAKE_C_COMPILER clang-3.9)
set(CMAKE_CXX_COMPILER clang++-3.9)
set(CMAKE_CXX_FLAGS "\
-std=c++14 -ggdb -Wall -Wextra -Wstrict-aliasing -Wunreachable-code -Wcast-qual -Wctor-dtor-privacy \
-Wdisabled-optimization -Wformat=2 -Winit-self -Wmissing-include-dirs -Wswitch-default \
-Wold-style-cast -Woverloaded-virtual -Wredundant-decls -Wshadow -Wstrict-overflow=5 -Wswitch-default -Wundef \
-Wno-variadic-macros -Wno-parentheses -Wno-unused-function -Wno-unused -Wno-documentation -fdiagnostics-show-option -ferror-limit=10 \
-pthread ${CMAKE_CXX_FLAGS}")
set(CMAKE_CXX_FLAGS "\
-nostdinc++ -isystem ${LIBCXX_INC_PATH} \
-D__CLANG__ ${CMAKE_CXX_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "\
${CMAKE_EXE_LINKER_FLAGS} -v -nodefaultlibs -lc++ -lc++abi -lm -lc -lgcc_s -lgcc -ldl \
-L ${LIBCXX_LIB_PATH}")
LINK_DIRECTORIES(${LIBCXX_LIB_PATH})
set(SOURCE_FILES main.cpp)
add_executable(JsonTest ${SOURCE_FILES})
TARGET_LINK_LIBRARIES(JsonTest c++ c++abi)
CLion 网站说他们支持 "libc++" 但没有关于如何设置 CLion 以使用 libc++ 的信息。我正在使用 Ubuntu 16 并下载了 libc++ 源代码并构建了它。所以我想用这个特定的版本。
这是我目前尝试过的方法:
所以我现在有了 libc++ 二进制文件。然后我创建了简单的 hello world 项目并将其 CMakeLists.txt 更改为使用我的自定义 libc++。但是,当我尝试 运行 项目时,出现错误:
/home/shitals/CLionProjects/JsonTest/cmake-build-debug/JsonTest: error while loading shared libraries: libc++.so.1: cannot open shared object file: No such file or directory
这是我的项目 cmake,强制使用我的自定义 libc++。
cmake_minimum_required(VERSION 3.8)
project(JsonTest)
set(CMAKE_CXX_STANDARD 14)
#libcxx which we will use with specific version of clang
SET(LIBCXX_INC_PATH /home/shitals/mylibc++/include/c++/v1)
SET(LIBCXX_LIB_PATH /home/shitals/mylibc++/lib)
set(CMAKE_C_COMPILER clang-3.9)
set(CMAKE_CXX_COMPILER clang++-3.9)
set(CMAKE_CXX_FLAGS "\
-std=c++14 -ggdb -Wall -Wextra -Wstrict-aliasing -Wunreachable-code -Wcast-qual -Wctor-dtor-privacy \
-Wdisabled-optimization -Wformat=2 -Winit-self -Wmissing-include-dirs -Wswitch-default \
-Wold-style-cast -Woverloaded-virtual -Wredundant-decls -Wshadow -Wstrict-overflow=5 -Wswitch-default -Wundef \
-Wno-variadic-macros -Wno-parentheses -Wno-unused-function -Wno-unused -Wno-documentation -fdiagnostics-show-option -ferror-limit=10 \
-pthread ${CMAKE_CXX_FLAGS}")
set(CMAKE_CXX_FLAGS "\
-nostdinc++ -isystem ${LIBCXX_INC_PATH} \
-D__CLANG__ ${CMAKE_CXX_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "\
${CMAKE_EXE_LINKER_FLAGS} -stdlib=libc++ -lc++ -lc++abi -lm -lc -lgcc_s -lgcc -ldl \
-L ${LIBCXX_LIB_PATH}")
set(SOURCE_FILES main.cpp)
add_executable(JsonTest ${SOURCE_FILES})
我编译的 libc++ 二进制文件确实有 libc++.so.1 文件。
好的...所以下面 CMakeLists.txt 在项目根目录下似乎有效:
cmake_minimum_required(VERSION 3.8)
project(JsonTest)
set(CMAKE_CXX_STANDARD 14)
#libcxx which we will use with specific version of clang
SET(LIBCXX_INC_PATH /home/shitals/GitHubSrc/AirSim/llvm-build/output/include/c++/v1)
SET(LIBCXX_LIB_PATH /home/shitals/GitHubSrc/AirSim/llvm-build/output/lib)
set(CMAKE_C_COMPILER clang-3.9)
set(CMAKE_CXX_COMPILER clang++-3.9)
set(CMAKE_CXX_FLAGS "\
-std=c++14 -ggdb -Wall -Wextra -Wstrict-aliasing -Wunreachable-code -Wcast-qual -Wctor-dtor-privacy \
-Wdisabled-optimization -Wformat=2 -Winit-self -Wmissing-include-dirs -Wswitch-default \
-Wold-style-cast -Woverloaded-virtual -Wredundant-decls -Wshadow -Wstrict-overflow=5 -Wswitch-default -Wundef \
-Wno-variadic-macros -Wno-parentheses -Wno-unused-function -Wno-unused -Wno-documentation -fdiagnostics-show-option -ferror-limit=10 \
-pthread ${CMAKE_CXX_FLAGS}")
set(CMAKE_CXX_FLAGS "\
-nostdinc++ -isystem ${LIBCXX_INC_PATH} \
-D__CLANG__ ${CMAKE_CXX_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "\
${CMAKE_EXE_LINKER_FLAGS} -v -nodefaultlibs -lc++ -lc++abi -lm -lc -lgcc_s -lgcc -ldl \
-L ${LIBCXX_LIB_PATH}")
LINK_DIRECTORIES(${LIBCXX_LIB_PATH})
set(SOURCE_FILES main.cpp)
add_executable(JsonTest ${SOURCE_FILES})
TARGET_LINK_LIBRARIES(JsonTest c++ c++abi)