【发布时间】:2021-09-01 13:24:48
【问题描述】:
我正在尝试使用 cmake 将 GSL 链接到我的 C++ 代码,并且在我尝试构建之前一切顺利。 CMakeLists.txt:
cmake_minimum_required(VERSION 3.9)
include_directories(${project_SOURCE_DIR}/src)
link_directories(${project_BINARY_DIR}/src)
FIND_PACKAGE(Boost COMPONENTS system filesystem unit_test_framework REQUIRED )
INCLUDE_DIRECTORIES( ${Boost_INCLUDE_DIR} )
find_package(GSL REQUIRED)
set(CMAKE_CXX_STANDARD 14)
set (lib_SOURCES
../src/file.h
../src/file.cpp
# etc
)
target_include_directories(project PRIVATE ${PROJECT_SOURCE_DIR} ${GSL_INCLUDE_DIR})
target_link_libraries(sigma OpenMP::OpenMP_CXX GSL::gsl GSL:gslcblas)
当我添加 #include <gsl/gsl_integration.h> 并从 C++ 中的库中调用某些内容时,例如一个 gsl_integration_workspace * w = gsl_integration_workspace_alloc (1000);,在make 我得到一个Undefined symbols for architecture x86_64:...,所以库没有链接,但我不知道为什么。 CMake 清楚地识别 GSL,但不喜欢它。
我正在使用通过自制软件安装的 Big Sur 11.3.1、GSL 2.6。
【问题讨论】:
-
GSL:gslcblas 也许它错过了一个“:”没有?
-
在
CMakeLists.txt中显示没有负责编译和链接的add_library或add_executable调用。请发布正确代码(最好以minimal reproducible example的形式)和它导致的完整错误消息。