1. 程式人生 > >如何在包含Eigen標頭檔案時去掉eigen3資料夾名字

如何在包含Eigen標頭檔案時去掉eigen3資料夾名字

在CMakeLists中尋找Eigen庫時發現的問題

今天看到ros中一個包在使用Eigen標頭檔案的時候直接寫的include”Eigen/Core”,在同一個系統同樣的環境變數下,ros工作空間以外的工程,卻必須包含include “eigen3/Eigen/Core”,不然就找不到該標頭檔案,感覺很奇怪,檢視該ros包的CMakeLists,部分截圖如下
CMakeLists部分截圖
發現多了一個cmake_modules的包,找到這個包,裡面有個FindEigen.cmake的檔案,開啟之後,是這個樣子
這裡寫圖片描述
可以看到其中的EIGEN_INCLUDE_DIRS已經被重映射了,可以通過message打印出這個環境變數,為/usr/include/eigen3,所以在他的CMakeLists中,包含這個標頭檔案路徑時已經把eigen3這個資料夾包含了,這時候程式碼中就可以將include “eigen3/Eigen/Core”簡化成
include”eigen3/Eigen/Core”。還可以直接將這個FindEigen.Cmake直接儲存到當前工程的cmake_modules檔案中,在自己的CMakeLists中加入
這裡寫圖片描述


同樣可以得到預設的/usr/include/eigen3路徑,需要注意的是,這時候不能用find_package(Eigen3 REQUIRED),只能用find_package(Eigen REQUIRED)或者加入版本號。
如果在qt_creater編輯器中想讓IDE找到這個標頭檔案,則需要在project.includes中加入這個路徑。