使用Cmake进行编译并使用仅标头库

时间:2015-02-03 19:01:28

标签: c++ cmake eigen eigen3

问题是继续/重复上一个问题,这个问题没有解决我遇到的问题。

Using Eigen with Cmake

使用make文件编译Eigen是一个步骤任务。但是在Cmake中,你如何添加一个只有标题的库(基本上我只使用Eigen网站中提取的存档文件夹中的Eigen文件夹,而忽略其余的。) 注意:Eigen文件夹有自己的CMakeLists.txt

2 个答案:

答案 0 :(得分:0)

您可以使用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})

你可以在cmake/FindEigen3.cmake

中的特征库的源代码中找到FindEigen3.cmake

https://bitbucket.org/eigen/eigen/src/971445a0e8ec311b4b663242b1f0ac668a9753ca/cmake/FindEigen3.cmake?at=default

答案 1 :(得分:0)

今天,当我想使用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)