第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何使用CMake正確添加包含目錄

如何使用CMake正確添加包含目錄

C++
守候你守候我 2019-09-18 14:40:01
大約一年前,我詢問了CMake中的頭依賴關(guān)系。我最近意識(shí)到問題似乎是CMake認(rèn)為那些頭文件是項(xiàng)目外部的。至少,在生成Code :: Blocks項(xiàng)目時(shí),頭文件不會(huì)出現(xiàn)在項(xiàng)目中(源文件會(huì)出現(xiàn))。因此,在我看來,CMake認(rèn)為這些標(biāo)題是項(xiàng)目的外部,并且不會(huì)在依賴項(xiàng)中跟蹤它們。在CMake教程中快速搜索只指出include_directories哪個(gè)似乎沒有我想做的...向CMake發(fā)出信號(hào)通知特定目錄是否包含要包含的標(biāo)頭的正確方法是什么,以及生成的Makefile是否應(yīng)該跟蹤這些標(biāo)頭?
查看完整描述

3 回答

?
慕運(yùn)維8079593

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超5個(gè)贊

必須做兩件事。


首先添加要包含的目錄:


target_include_directories(test PRIVATE ${YOUR_DIRECTORY})

如果您在沒有支持的情況下遇到非常舊的CMake版本(2.8.10或更早版本)target_include_directories,您也可以使用舊版include_directories:


include_directories(${YOUR_DIRECTORY})

然后,您還必須將頭文件添加到當(dāng)前目標(biāo)的源文件列表中,例如:


set(SOURCES file.cpp file2.cpp ${YOUR_DIRECTORY}/file1.h ${YOUR_DIRECTORY}/file2.h)

add_executable(test ${SOURCES})

這樣,頭文件將在Makefile中顯示為依賴項(xiàng),例如在生成的Visual Studio項(xiàng)目中,如果生成一個(gè)。


如何將這些頭文件用于多個(gè)目標(biāo):


set(HEADER_FILES ${YOUR_DIRECTORY}/file1.h ${YOUR_DIRECTORY}/file2.h)


add_library(mylib libsrc.cpp ${HEADER_FILES})

target_include_directories(mylib PRIVATE ${YOUR_DIRECTORY})

add_executable(myexec execfile.cpp ${HEADER_FILES})

target_include_directories(myexec PRIVATE ${YOUR_DIRECTORY})


查看完整回答
反對(duì) 回復(fù) 2019-09-18
?
慕妹3146593

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超9個(gè)贊

如果將CMake與其他創(chuàng)建Makefile的方法(例如make或qmake)進(jìn)行比較,則CMake更像是一種腳本語言。它不像Python那么酷,但仍然如此。


如果在各種開源項(xiàng)目中查看人們?nèi)绾伟夸?,就沒有像“ 正確的方法 ” 這樣的東西。但有兩種方法可以做到這一點(diǎn)。


粗體include_directories會(huì)將目錄附加到當(dāng)前項(xiàng)目以及您將通過一系列add_subdirectory命令追加的所有其他后代項(xiàng)目。有時(shí)人們會(huì)說這種做法是遺留的。


更優(yōu)雅的方法是使用target_include_directories。它允許為特定項(xiàng)目/目標(biāo)附加目錄,而不會(huì)(可能)不必要的繼承或各種包含目錄的沖突。還允許執(zhí)行甚至是微妙的配置,并為此命令附加以下標(biāo)記之一。


PRIVATE - 僅用于此指定的構(gòu)建目標(biāo)


PUBLIC - 將其用于指定目標(biāo)和與此項(xiàng)目鏈接的目標(biāo)


接口 - 僅用于與當(dāng)前項(xiàng)目鏈接的目標(biāo)


PS:


這兩個(gè)命令都允許將目錄標(biāo)記為SYSTEM,以提示指示目錄將包含警告不是您的業(yè)務(wù)。


類似的答案是其他命令對(duì)target_compile_definitions / add_definitions, target_compile_options / CMAKE_C_FLAGS


查看完整回答
反對(duì) 回復(fù) 2019-09-18
  • 3 回答
  • 0 關(guān)注
  • 12524 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)