簡體   English   中英

如何在 CMake 中明確指定樹外源?

[英]How do I explicitly specify an out-of-tree source in CMake?

我看了這篇文章: Using CMake to statically link to a library outside the project 但我仍然無法解釋這意味着什么:

add_subdirectory(/path/to/the/library/source/directory subproject/grzeslib)

我假設“/path/to/the/library/source/directory”是指硬盤驅動器的路徑,但我不明白“subproject/grzeslib”是什么意思。 現在我嘗試了:

include_directories(../path/to/dir)
add_subdirectory (../path/to/dir .) 

但我收到了一個詳細的警告。 有一個更好的方法嗎?

第二個參數是該子目錄中目標結果的輸出目錄。

從這里的文檔:https ://cmake.org/cmake/help/v3.3/command/add_subdirectory.html

添加子目錄

將子目錄添加到構建。

 add_subdirectory(source_dir [binary_dir] [EXCLUDE_FROM_ALL])

將子目錄添加到構建。

  • source_dir 指定源 CMakeLists.txt 和代碼文件所在的目錄。 如果它是相對路徑,它將相對於當前目錄進行評估(典型用法),但它也可能是絕對路徑。
  • binary_dir 指定放置輸出文件的目錄。 如果它是相對路徑,它將相對於當前輸出目錄進行評估,但它也可能是絕對路徑。 如果未指定 binary_dir,則在展開任何相對路徑之前,將使用 source_dir 的值(典型用法)。
  • 指定源目錄中的 CMakeLists.txt 文件將由 CMake 立即處理,然后在當前輸入文件中的處理繼續超出此命令。
  • 如果提供了 EXCLUDE_FROM_ALL 參數,則子目錄中的目標默認不會包含在父目錄的 ALL 目標中,並且會從 IDE 項目文件中排除。 用戶必須在子目錄中顯式構建目標。 這適用於子目錄包含項目的單獨部分有用但不必要的情況,例如一組示例。 通常,子目錄應包含其自己的 project() 命令調用,以便在子目錄中生成完整的構建系統(例如 VS IDE 解決方案文件)。 請注意,目標間依賴關系取代了此排除。 如果父項目構建的目標依賴於子目錄中的目標,則依賴目標將包含在父項目構建系統中以滿足依賴關系。

文檔

將子目錄添加到構建。 source_dir 指定源 CMakeLists.txt 和代碼文件所在的目錄。 如果它是相對路徑,它將相對於當前目錄進行評估(典型用法),但它也可能是絕對路徑。 binary_dir 指定放置輸出文件的目錄。 如果它是相對路徑,它將相對於當前輸出目錄進行評估,但它也可能是絕對路徑。 如果未指定 binary_dir,則在展開任何相對路徑之前,將使用 source_dir 的值(典型用法)。 指定源目錄中的 CMakeLists.txt 文件將由 CMake 立即處理,然后在當前輸入文件中的處理繼續超出此命令

從您的示例中,在“/path/to/the/library/source/directory”中創建的所有二進制文件都將放在“subproject/grzeslib”中,保持“干凈”源目錄是一件好事。

https://stackoverflow.com/a/15570165/2482283

需要指定第二個參數二進制路徑,它是相對於 ${CMAKE_CURRENT_BINARY_DIR}

add_subdirectory(/path/to/the/library/source/directory subproject/grzeslib)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM