當我嘗試編譯時,再次遇到「架構x86_64的未定義符號」錯誤。我已經嘗試了超過我在這篇文章中實際記錄的內容(因爲我已經忘記了我所嘗試過的所有內容)。這是一個非常簡單的設置和應該很容易與CMake編譯...CMake在include_directories中找不到合適的頭文件/包含文件
當我在這上運行一個作品就好了。但我想將它轉換爲CMake以實現互操作性。正如你所看到的,我已經在幾個地方拋出了我的「$ {HEADERS}」變量,我嘗試了很多地方,但是我一直在收到我的錯誤。根據我放置$ {HEADER}的位置,它也可以在技術上生成「錯誤:無法在生成多個輸出文件時指定-o」的錯誤(如果它在中只有位於target_link_library聲明中,則適用)。
我有2個文件夾:
Root
Headers (contains all .h files)
Source (contains all .cc/.cpp/.c files) (and also a CMakeLists.txt)
CMakeLists.txt
我的根的CMakeLists.txt包含以下內容:
cmake_minimum_required(VERSION 2.8.4)
project(Framework)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
add_compile_options("-v")
add_subdirectory(Source)
#Variables for making my life easier and adding the headers
set(H Headers)
include_directories(${H})
set(S Source)
file(GLOB HEADERS
#Add any file in the headers dir
"${H}/*"
)
# Create a variable to use for main.cc
set(MAIN ${S}/main.cc ${HEADERS})
# Add the main.cc file and headers
add_executable(Framework ${MAIN} ${HEADERS})
# Add the .cc/.cpp files
target_link_libraries(Framework ${SOURCE_FILES})
我的CMakeLists.txt在我的源目錄中包含以下內容:
file(GLOB SOURCES
"*.cc"
"*.cpp"
)
add_library(SOURCE_FILES ${SOURCES})
我在頭文件中沒有一個,我相信,文檔說明我們不需要。
感謝您的幫助。我看:
- cmake including h files from other directories
- http://www.cmake.org/cmake/help/v2.8.0/cmake.html(無論是版本2.x和3.x)
- CMake Adding Headers to Projectfile - 有一個解決方案潛在的,但最終說:「我不知道知道」 :(
- 和許多其他各種郵件列表和其他網站
你先生,一個救生員。我從另一個完全不同的項目中操縱了一箇舊的CMake;這顯然沒有奏效。因此,鏈接庫或添加可執行文件的位置並不重要,只要它存在即可? – lilott8 2014-11-14 21:11:09
我不確定你的意思。當你使用像add_executable/add_library/...這樣的函數時,你可以創建一個目標。你可以依賴這個目標在**之後創建的其他目標或特定目標之前創建的目標。 CMake將確保所有的依賴關係在最後得到滿足,否則會尖叫。 – 2014-11-14 21:45:57