#c #clion #gsl #cmakelists-options
Вопрос:
Я пытаюсь использовать код C в CLion, который опирается на внешнюю библиотеку C GSL.
Я создал CMakeLists.txt файл как:
cmake_minimum_required(VERSION 3.20)
project(untitled)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED YES)
set(CMAKE_CXX_COMPILER /usr/local/Cellar/gcc/11.1.0_1/bin/g -11)
set(CMAKE_CXX_FLAGS " -std=c 17 -mpopcnt -L/usr/local/lib")
include_directories(${PROJECT_BINARY_DIR}/Include /usr/local/include)
add_executable(untitled main.cpp)
find_package(GSL REQUIRED)
include_directories(${GSL_INCLUDE_DIR})
target_link_libraries(untitled main.cpp GSL::gsl)
но когда я его компилирую, я получаю следующую ошибку:
[ 50%] Linking CXX executable untitled
ld: library not found for -lmain.cpp
collect2: error: ld returned 1 exit status
make[3]: *** [untitled] Error 1
make[2]: *** [CMakeFiles/untitled.dir/all] Error 2
make[1]: *** [CMakeFiles/untitled.dir/rule] Error 2
make: *** [untitled] Error 2
Есть какие-нибудь предположения о том, что может быть причиной этого?
Ответ №1:
Проблема в моем коде в CMakeLists.txt было просто и банально, я просто этого не видел.
На самом деле, пришлось удалить ‘main.cpp’ объявление в target_link_libraries.
cmake_minimum_required(VERSION 3.20)
project(untitled)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED YES)
add_executable(untitled main.cpp)
find_package(GSL REQUIRED)
include_directories(${GSL_INCLUDE_DIR})
target_link_libraries(untitled GSL::gsl)
Этот код сработал.
result: 5.05537 0.401813 0.150471
error : 0.0553737 0.00181308 0.000470529
Process finished with exit code 0