簡體   English   中英

將 Visual Studio C++ 項目遷移到 Linux 和 CMake

[英]Migrating a Visual Studio C++ Project to Linux and CMake

我目前正在嘗試從 Windows 10 移動到 Linux (Pop,_OS)。 但我無法讓我的 C++ 項目在后者上正確編譯和運行,我的 C++ 項目是使用 Visual Studio 創建的,我還指定了包含文件夾、庫文件夾以及應該鏈接的內容。 等在解決方案的屬性。 我現在想改用 Neovim 而不是 Visual Studio(或 Visual Studio Code)編寫我的代碼,並嘗試通過 G++ 編譯它,我很快注意到我的包含文件無法識別。 所以我嘗試使用 CMake 並創建了一個 CMakeLists.txt。 我嘗試同時使用

INCLUDE_DIRECTORIES()

TARGET_INCLUDE_DIRECTORIES()

但無論我輸入什么路徑,都無法識別我包含的文件。 即使當我使用導致第一個錯誤的特定包含文件的路徑時,它仍然無法識別。

我的目標是我可以指定一個包含文件夾和一個庫文件夾,這樣我就可以在其中添加文件和文件夾,並且在編譯時自動識別新文件和文件夾(即我不必編輯 CMakeLists. txt 在未來)。 CMake 甚至可能嗎?如果是,有人知道我在哪里可以找到有關它的更多信息,或者有人有執行此操作的 CMakeLists.txt 文件嗎? 如果不是,我是否必須指定 CMakeLists.txt 文件中的每個文件和文件夾,並對每個新的包含和庫執行相同的操作?

項目結構:

Overall folder
\- build
\- include
---> includeFolder1
---> includeFolder2
---> ...
\- libs
---> library1.lib
---> library2.lib
---> ...
\- src
--> main.cpp
--> other .cpp's and .h's
--> other folders with .cpp's and .h's

我試過使用 G++ 和 CMake 進行編譯,但無論我指定什么作為包含和庫路徑,兩者都不起作用。

我找到了導致我出錯的問題。 問題不在於 CMake,而在於 Windows 和 Linux 的具體細節。 我總是收到類似“<foo\foo.h> 沒有這樣的文件或目錄”的錯誤,這讓我認為 CMake 找不到包含目錄或其中的文件。 然而,問題在於包含路徑本身。 在 Windows 上,路徑可以用反斜杠 ('\') 給出,但在 Linux 上,路徑用正斜杠 ('/') 命名。 所以在我的例子中,文件的路徑是“../foo/foo.h”,但我的代碼有“#include <foo\foo.h>”。 因此,在將項目從 Windows 遷移到 Linux 時,一定要注意 #include 語句中的反斜杠!

下面是模板 CMakeLists.txt,如果您想將 Visual Studio 項目遷移到 Linux,這應該是一個很好的起點。我使用 glfw (+ glad) 作為示例庫:

cmake_minimum_required(VERSION 3.20)

project(ExampleProject)

add_executable(${PROJECT_NAME} src/glad.c src/main.cpp)

target_include_directories(${PROJECT_NAME} PRIVATE include)

target_link_libraries(${PROJECT_NAME} GL dl glfw)

暫無
暫無

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

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