[英]cmake errors: Cannot find source file
我正在嘗試第一次使用cmake,但很難使它起作用。 有一個源文件和一個庫文件(分別為Lab_4.cpp
和Trip_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.