我有两个独立的项目。第一个项目使用 range-v3 仅标头库,我也想在我的新项目中使用范围库,但包含该库会显示重复constexpr
错误。我的第一个项目中没有duplicate error
。
总之:
为什么我的编译器duplicate symbol error
在一个全新的项目中使用范围库时会抛出该消息,我该如何解决这个问题?
CLion 2019.3(项目启用 C++20 选项)
海合会 9.2
ericniebler 的 range-v3 库
project structure
-cmake_build-debug
CMakeLists.txt
main.cpp
我的主要:
#include <vector>
#include <range/v3/view/transform.hpp> //throws error
int main() {
std::vector<int> myvec{1,2,3,4};
return 0;
}
在我的旧项目中工作的 CMake 代码:
cmake_minimum_required(VERSION 3.15)
project(codingchallange C CXX)
set(CMAKE_CXX_STANDARD 20)
set(SOURCE_FILES main.cpp)
add_library(range_v3 INTERFACE IMPORTED) set_target_properties(range_v3 PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES /home/myname/CLionProjects/Libraries2/range-v3/range-v3-master/include)
add_executable(codingchallange ${SOURCE_FILES})
target_link_libraries(codingchallange range_v3) #link libraries to exe
我的编译器抛出的错误消息:
Scanning dependencies of target codingchallange
[ 50%] Building CXX object CMakeFiles/codingchallange.dir/main.cpp.o
In file included from /home/myname/CLionProjects/Libraries2/range-v3/range-v3-master/include/range/v3/range_fwd.hpp:22,
from /home/myname/CLionProjects/Libraries2/range-v3/range-v3-master/include/range/v3/view/transform.hpp:23,
from /home/myname/CLionProjects/codingchallange/main.cpp:4:
/home/myname/CLionProjects/Libraries2/range-v3/range-v3-master/include/range/v3/range/conversion.hpp:207:19: error: duplicate ‘constexpr’
207 | constexpr CPP_concept_bool has_allocator_type =
| ^~~~~~~~~~~~~~~~
/home/myname/CLionProjects/Libraries2/range-v3/range-v3-master/include/range/v3/range/conversion.hpp:211:19: error: duplicate ‘constexpr’
211 | constexpr CPP_concept_bool range_and_not_view =
| ^~~~~~~~~~~~~~~~
/home/myname/CLionProjects/Libraries2/range-v3/range-v3-master/include/range/v3/range/conversion.hpp:223:19: error: duplicate ‘constexpr’
223 | constexpr CPP_concept_bool convertible_to_cont_impl_ =
| ^~~~~~~~~~~~~~~~
/home/myname/CLionProjects/Libraries2/range-v3/range-v3-master/include/range/v3/view/transform.hpp:74:19: error: duplicate ‘constexpr’
74 | constexpr CPP_concept_bool iter_transform_1_readable =
| ^~~~~~~~~~~~~~~~
/home/myname/CLionProjects/Libraries2/range-v3/range-v3-master/include/range/v3/view/transform.hpp:93:19: error: duplicate ‘constexpr’
93 | constexpr CPP_concept_bool iter_transform_2_readable =
已解决:我的旧 CMake 有一个我忘记使用的特定编译器选项(见答案)。