我正在尝试在我的项目中使用 Eigen,默认情况下我使用 CMake 构建系统。这是我的
CMakeLists.txt
:
cmake_minimum_required(VERSION 3.14)
project(math VERSION 0.0 DESCRIPTION "" LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "Release")
endif()
option(STATICALLY_LINK "Build for release purposes (statically link everything)" OFF)
if(STATICALLY_LINK)
set(BUILD_SHARED_LIBS OFF)
else()
set(BUILD_SHARED_LIBS ON)
endif()
set(CMAKE_CXX_FLAGS
"${CMAKE_CXX_FLAGS} \
-std=c++17 \
-D_GLIBCXX_USE_CXX11_ABI=0 \
-Wall \
-Wformat \
-Wextra \
-Wmissing-include-dirs \
-fdiagnostics-color=always \
-mavx"
)
if(CMAKE_BUILD_TYPE MATCHES "Release")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3")
endif()
set(EIGEN3_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third-party/eigen)
set(EIGEN3_INCLUDE_DIR ${EIGEN3_DIR}/Eigen)
list(APPEND CMAKE_MODULE_PATH "${EIGEN3_DIR}/cmake")
include_directories(./)
include_directories(${EIGEN3_INCLUDE_DIR})
find_package(Eigen3 3.4.0 NO_MODULE)
set(SOURCES main.cpp)
add_executable(math ${SOURCES})
target_link_libraries(math ${Eigen_LIBRARIES})
输出:
cmake -G "MinGW Makefiles"
CMake Warning:
No source or binary directory provided. Both will be assumed to be the
same as the current working directory, but note that this warning will
become a fatal error in future CMake releases.
-- Could NOT find Eigen3 (missing: Eigen3_DIR)
-- Configuring done (0.2s)
-- Generating done (0.1s)
-- Build files have been written to: C:/Users/Alix/Desktop/math
我发现了这个建议: 无法使用 CMake 找到 Eigen3
但是,该链接声称,
转到 Eigen 源目录并运行 CMake 和安装步骤
我提取并添加为子模块的版本是:3.4.0,来自以下来源: https://gitlab.com/libeigen/eigen/-/tree/master/cmake?ref_type=heads
提交:4d54c43
VS Code 中的项目:
我最终自己解决了这个问题。这不是什么大问题。问题是 Eigen 是一个静态链接的单个标头,因此不会像我最初想象的那样生成 DLL。感谢其他 SO 成员的努力。