У меня есть два отдельных проекта. В первом проекте используется библиотека только заголовка range-v3 и Я хочу использовать библиотеку диапазонов и в моем новом проекте , но включение библиотеки показывает ошибку constexpr
с дубликатом. У меня нет duplicate error
в моем первом проекте.
В итоге:
Почему мой компилятор выдает сообщение duplicate symbol error
при использовании библиотеки диапазонов в совершенно новом проекте и Как я могу решить эту проблему?
CLion 2019.3 (опция включения проекта C ++ 20)
G CC 9.2
range-v3 library by ericniebler
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 имеет опцию c, которую я забыл использовать (см. Ответ).