一位同事的項目使用手寫的Makefile和硬編碼的庫路徑。因此,例如在CXXFLAGS
和LDFLAGS
設置如下所示:通過在命令行上指定路徑手動執行find_package的工作
-I/home/personA/libraries/eigen-3.2.7
-I/home/personA/libraries/boost_1_60_0
-I/home/personB/hdf5-1.8.17/include
-L/home/personA/libraries/boost_1_60_0/stage/lib/
-L/home/personB/hdf5-1.8.17/lib
沒有人有這臺機器上的直接管理權,所以才安裝Debian軟件包這些庫將涉及嘮叨管理員安裝它們。即使他這樣做,也可能存在不在存儲庫中的不同依賴項。
在我的CMake的文件中,我有這樣的:
find_package(HDF5 REQUIRED COMPONENTS C CXX)
include_directories(${HDF5_INCLUDE_DIRS})
find_package(Boost REQUIRED COMPONENTS filesystem system program_options)
find_package(Eigen3 REQUIRED)
include_directories(SYSTEM ${EIGEN3_INCLUDE_DIR})
find_package(OpenMP)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
在我的Fedora工作站,這工作得很好。在我的Ubuntu 14.04虛擬機上,它也可以工作,它也建立在Travis CI上。但是,這個項目運行在我們的計算集羣上,依賴關係實際上很奇怪。
因此,我想調用cmake
,告訴它我已經知道它需要include和library標誌,甚至不用去查找FindEigen3.cmake
文件(這不在那裏)。
有什麼方法可以覆蓋find_package
並只是手動指定路徑?
問題是在目標系統上甚至沒有找到FindEigen3.cmake文件。所以我現在選擇了一種與您的類似的不同方法,並且不需要安裝該文件。 –