簡體   English   中英

cmake錯誤:找不到源文件

[英]cmake errors: Cannot find source file

我正在嘗試第一次使用cmake,但很難使它起作用。 有一個源文件和一個庫文件(分別為Lab_4.cppTrip_4.cpp ),它們都位於源文件夾( Lab_4 )中。 到目前為止,這是我的cmake文件中的內容:

cmake_minimum_required (VERSION 2.6)
project (Lab_4)

#add executable
add_executable(Lab_4 ${PROJECT_SOURCE DIR}/Lab_4.cxx)
target_link_libraries (Lab_4 ${EXTRA_LISTS})

#add libraries
add_library (${PROJECT_SOURCE_DIR}/Trip.cxx)

ls顯示兩個文件都在該文件夾中。 我真的是cmake的新手,所以我確定自己犯了一個明顯的錯誤,但我不知道它是什么。 任何幫助,將不勝感激!

要將源添加到CMake項目,可以使用aux_source_directory命令。 如果源位於Lab_4文件夾中,則可以執行以下操作:

project(Lab_4)

aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/Lab_4 LAB4_SOURCES)
add_executable(Lab_4 ${LAB4_SOURCES})

CMAKE_CURRENT_SOURCE_DIR是當前CMakeFiles.txt所在目錄的路徑。 上面的示例不會將Trip_4.cpp構建為庫,而是將其與Lab_4.cpp一起用作另一個源文件。


如果您希望將Trip_4.cpp構建為庫文件,我建議將其與Lab_4.cpp分開,以方便以后使用。 目錄結構示例可以是:

MyProject/
|-- app/
|   |-- src/
|   |   `-- Lab_4.cpp
|   |-- inc/
|   `-- CMakeLists.txt
|-- lib/
|   |-- src/
|   |   `-- Trip_4.cpp
|   |-- inc/
|   `-- CMakeLists.txt
`-- CMakeLists.txt

在這種情況下, MyProject/lib/CMakeLists.txt將包含如下內容:

project(Trip_4)

include_directories(${CMAKE_CURRENT_SOURCE_DIR}/inc)
aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/src TRIP4_SOURCES)

add_library(Trip_4 ${TRIP4_SOURCES})

MyProject/app/CMakeLists.txt與我在第一個示例中顯示的幾乎相同,除了現在必須保持對Trip_4庫的依賴:

project(Lab_4)

include_directories(
    ${CMAKE_CURRENT_SOURCE_DIR}/../lib
    ${CMAKE_CURRENT_SOURCE_DIR}/inc
)
aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/src LAB4_SOURCES)

add_executable(Lab_4 ${LAB4_SOURCES})
add_dependencies(Lab_4 Trip_4)
target_link_libraries(Lab_4 Trip_4)

最后, MyProject/CMakeLists.txt必須將庫和可執行子項目綁定在一起,如下所示:

project(MyProject)

add_subdirectory(lib)
add_subdirectory(app)
cmake_minimum_required(VERSION 2.6)
project(Lab_4)

add_library(Trip_4 Lab_4/Trip4.cpp)
add_executable(Lab_4 Lab_4/Lab_4.cpp)
target_link_libraries(Lab_4 Trip_4 ${EXTRA_LISTS})

您的確切意圖尚不完全清楚,但是根據您當前的問題描述,以上是最簡單的說明。

您絕對確定您的CMake是2.6版嗎? 您應該將版本更新為當前使用的任何CMake(鍵入cmake --version進行查找)。

暫無
暫無

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

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