这个问题是前一个问题的延续/重复问题,它没有解决我遇到的问题。
使用 make 文件编译 Eigen 是一步任务。但是在 Cmake 中,如何添加仅标头库(基本上我只使用 Eigen 网站中提取的存档文件夹中的 Eigen 文件夹,而忽略其余部分。)注意:Eigen 文件夹有自己的 CMakeLists.txt
这个问题是前一个问题的延续/重复问题,它没有解决我遇到的问题。
使用 make 文件编译 Eigen 是一步任务。但是在 Cmake 中,如何添加仅标头库(基本上我只使用 Eigen 网站中提取的存档文件夹中的 Eigen 文件夹,而忽略其余部分。)注意:Eigen 文件夹有自己的 CMakeLists.txt
今天我想使用stb_image.h库时遇到了同样的问题。我是这样解决的:
将带有头文件的库定义为输入文件:
add_library(stb_image SHARED stb_image.h)
由于该文件没有可识别的文件结尾,因此您必须告诉 cmake 该文件使用哪种语言(在本例中为 C):
set_target_properties(stb_image PROPERTIES LINKER_LANGUAGE C)
最后, stb_image 需要我定义STB_IMAGE_IMPLEMENTATION
以启用库的编译:
target_compile_definitions(stb_image PRIVATE STB_IMAGE_IMPLEMENTATION)
您可以使用 FindEigen3.cmake。将其放入cmake/Modules
文件夹并将以下行添加到您的 CmakeLists.txt
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
find_package(Eigen3 REQUIRED)
include_directories(${EIGEN3_INCLUDE_DIR})
您可以在 Eigen 库的源代码中找到 FindEigen3.cmakecmake/FindEigen3.cmake