導航:首頁 > 版本升級 > make頭文件路徑

make頭文件路徑

發布時間:2023-08-06 16:42:16

⑴ makefile中怎麼設置頭文件的路徑在線等

你源代碼包含頭文源件的方式也要和你的CFLAGS的路徑配合,舉例:
1 源文件:#include <pcl/point_types.h> makefile: -I/test/ROS/ros/fuerte/include/
2 源文件:#include <point_types.h> makefile: -I/test/ROS/ros/fuerte/include/pcl

估計你源文件是1的情況,makefile又是2的情況,所一出問題了。

⑵ CMake裡面怎麼遞歸地設定頭文件的搜索目錄

CMake頭文件搜索路徑

# 中午吃完飯,就到了辦公室,開始看 OGRE 的CMake配置文件。
# 想根據實例,再配合 CMake 安裝包里自帶了官方Manual,學習CMakeLists文件的編寫。
# 不得不承認,沒有外網真心慘。用手機查資料眼睛都瞅瞎了。
# 中間出去吃了個晚飯,然後一直研究到10點,還算是有點收獲
本文內容要點:
1. 多目錄下,頭文件路徑包含
2. 項目依賴關系設置
3. 發現的一些問題
本文涉及到的CMake命令:
project(name) : 設置project的名字為name。
add_dependencies:設置依賴關系
add_subdirectory:添加子目錄
add_executable:添加可執行文件
add_library:添加庫
cmake_minimum_required:設置cmake最低版本要求
include_directories:包含目錄
target_link_libraries:鏈接庫
set:可以用於設置變數
補充命令:
file(GLOB_RECURSE HEADER_FILES dir/*.h??)
此命令可以用來收集源文件 HEADER_FILES 作為變數保存收集的結果。 後面為文件過濾器,其中dir為起始搜索的文件夾,即在dir目錄下,開始收集,而且會遍歷子目錄。 ? 代表 a-z。
首先給出目錄結構(「-」表示目錄級數)
-sin
--include
---sin.h
--src
---sin.cpp
-sinutil
--include
---sinutil.h
--src
---sinutil.cpp
-main
--main.cpp
目的:
main.cpp 要使用 sin 裡面 sin.h 和 sin.cpp 生成的靜態庫 sin.lib,而 sin.lib 的生成要使用 sinutil 裡面的 sinutil.h 和 sinutil.cpp 生成的靜態庫 sinutil.lib 。
sinutil.cpp 要包含 sinutil.h,而 sinutil.h 不在 sinutil.cpp 目錄下。同理 sin.cpp 也要包含 sinutil.h ,main.cpp 要包含 sin.h。
根據CMake的規則,在根目錄下和每個子目錄下加入 CMakeLists.txt 文件。
# 為了便於區分,我給每個 CMakeLists.txt 加了編號後綴。
# 真正運行的時候,CMake配置文件只能命名為 CMakeLists.txt。
得到的目錄結構如下:
- CMakeLists.txt - 1
-sin
-- CMakeLists.txt - 2
--include
---sin.h
--src
---sin.cpp
-sinutil
-- CMakeLists.txt - 3
--include
---sinutil.h
--src
---sinutil.cpp
-main
-- CMakeLists.txt - 4
--main.cpp
CMake配置文件內容如下:
#CMakeLists.txt - 1
cmake_minimum_required(VERSION 2.8.1)

project(CMakeDemo)
include_directories(${CMakeDemo_SOURCE_DIR}/sin/include)
include_directories(${CMakeDemo_SOURCE_DIR}/sinutil/include)

add_subdirectory(sin)
add_subdirectory(sinutil)
add_subdirectory(main)

#CMakeLists.txt - 4
project(MainDemo)
set(SRC_LIST main.cpp)
add_executable(demo ${SRC_LIST})
add_dependencies(demo SinLibrary)
target_link_libraries(demo ${SinLibrary})
#CMakeLists.txt - 2
set(HEADER_LIST include/sin.h)
set(SRC_LIST src/sin.cpp)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
add_library(SinLibrary ${HEADER_LIST} ${SRC_LIST})
add_dependencies(SinLibrary SinUtilLibrary)
target_link_libraries(SinLibrary ${SinUtilLibrary})
#CMakeLists.txt - 3
set(HEADER_LIST include/sinutil.h)
set(SRC_LIST src/sinutil.cpp)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
add_library(SinUtilLibrary ${HEADER_LIST} ${SRC_LIST})
結論:
1. CMake使用 include_directories 命令來添加頭文件包含路徑,且 include_directories 命令具有繼承性。下級目錄繼承了上級目錄中CMakeLists.txt 裡面 include 的 directrories。但是平級目錄之間的 CMakeList.txt 裡面的include_directories 不能共享。
2. CMAKE_CURRENT_SOURCE_DIR 為 CMake 定義的環境變數,指向當前 CMakeLists.txt 所在的目錄。
3. 當使用 project(name) 命令時,CMake會自動生成兩個變數 name_SOURCE_DIR 和 name_BINARY_DIR,前一個指向使用 project 命令的CMakeLists.txt 所在的文件夾,後一個指向用cmake構建時,Build 目錄下對應的目錄。
問題:
1. 目前還沒搞清 project 與 VS 裡面的 解決方案(solution)和 工程(項目,project)的對應關系。
2. 使用 add_dependencies 來設置依賴關系時,在VS 2003 下,會為每一個subdirectory裡面的project生成一個額外的帶 UTILITY 後綴的工程,能不生成嗎?

⑶ 如何在makefile中指定頭文件目錄

你應該說的是gcc來編譯吧,gcc在makefile里邊就是一個命令,你的要求是指定頭文件的目錄,那麼可以用-I選項來指定。比如,你在src/include/目錄中放了很多頭文件,那麼可以參照如下:

myapp: main.o
gcc $^ -o $@
main.o: main.c
gcc -Isrc/include/ -c $^ -o $@

其中 -I 後邊緊接著的就是路徑,它們之間是沒有空格的哦!

⑷ makefile中怎樣指定include頭文件的路徑

你源代碼包含頭文件的方式也要和你的CFLAGS的路徑配合,舉例:專1源文屬件:#includemakefile:-I/test/ROS/ros/fuerte/include/2源文件:#includemakefile:-I/test/ROS/ros/fuerte/include/pcl

閱讀全文

與make頭文件路徑相關的資料

熱點內容
錢多多是什麼app 瀏覽:83
等等就刪你數據用英語怎麼說 瀏覽:649
zip壓縮文件如何解壓 瀏覽:740
你去外面玩沒有網路怎麼辦 瀏覽:252
abc文件用什麼打開 瀏覽:887
卸載後文件還在哪裡 瀏覽:152
appleid需要8個字元 瀏覽:9
瀏覽器緩存文件提取 瀏覽:821
網路上如何找回證券開戶賬號 瀏覽:373
紅酒網站哪個好 瀏覽:822
蘋果大悅城維修中心 瀏覽:179
快點app有哪些好看的小說主角是男的 瀏覽:515
iphone怎麼改文件名後綴 瀏覽:776
win10系統瀏覽器字體暗淡 瀏覽:486
微信好友備份助手插件 瀏覽:180
太空工程師如何編程模塊 瀏覽:721
劍網三95級新版本挖寶 瀏覽:288
win10如何喚出表情 瀏覽:712
系統損壞日誌文件怎麼修復 瀏覽:175
mac雙系統裝win10系統下載 瀏覽:398

友情鏈接