【问题标题】:Error in target_link_libraries when linking GSL in CLion CMakeLists.xt在 CLion CMakeLists.xt 中链接 GSL 时 target_link_libraries 出错
【发布时间】:2021-11-18 14:12:51
【问题描述】:

我正在尝试在 CLion 中使用依赖于外部 C 库 GSL 的 C++ 代码。

我创建了一个 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

有什么可能导致这种情况的建议吗?

【问题讨论】:

    标签: c clion gsl cmakelists-options


    【解决方案1】:

    我在 CMakeLists.txt 中的代码中的问题很简单,我只是没看到。

    事实上,不得不删除 target_link_libraries 中的 'main.cpp' 声明。

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-22
      • 2014-08-27
      • 1970-01-01
      • 2018-05-25
      相关资源
      最近更新 更多