我有一個 CMake 專案,用于生成 Visual Studio 解決方案,然后我嘗試對其進行編譯。由于某種原因,編譯后的庫檔案不存在。我搜索了整個專案檔案夾,但找不到任何庫檔案。這是我的 CMake 設定:
專案根:
cmake_minimum_required(VERSION 3.22)
project(ShadowContainers)
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
include_directories(include/)
add_subdirectory(library)
...
庫子目錄:
add_library(libShadows shadows.tpp ../include/shadows.hpp)
set_target_properties(libShadows PROPERTIES LINKER_LANGUAGE CXX) # a tpp and an hpp aren't enough to make the system certain it's c
target_compile_features(libShadows PRIVATE cxx_std_23)
MSbuild 輸出包含以下行:
Done Building Project "C:\Users\[..]\projects\Shadow Array\library\libShadows.vcxproj" (default targets).
Done Building Project "C:\Users\[..]\projects\Shadow Array\library\libShadows.vcxproj.metaproj" (default targets).
即使libShadows是我專案中的唯一目標,它也不在我的專案目錄中。
其他人有過這種經歷嗎?任何幫助表示贊賞。謝謝!
編輯:要編譯專案,我嘗試過:
我的典型流程(作業目錄=專案根目錄):
cmake .
msbuild ShadowContainers.sln
另一個程序(作業目錄也是專案根目錄):
mkdir build
cd build
cmake ..
cmake --build .
兩者都產生了相同的結果,盡管 VS 和 CMake 檔案位于不同的位置。無論哪種方式都不會輸出任何庫。
uj5u.com熱心網友回復:
我能夠找到問題所在。CMake(以及與此相關的約定)不會將 .tpp 視為代碼檔案(類似于他們處理頭檔案的方式)。因此,我試圖編譯一個沒有合法代碼檔案的目標。純模板庫根本不是庫,所以我不應該嘗試獨立編譯它,而應該將 .hpp 和 .tpp 作為包含在我的專案中!
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/490872.html
