2
我已閱讀並嘗試了幾乎所有的教程/維基/ SO後,頁面片斷我能找到讓這個CMake的工作....cmake的簡單子目錄不包括文件
我有一個超級簡單目錄結構:
ROOT/
|- CMakeLists.txt
|- main.cpp
|- sub/
|-CMakeLists.txt
|-subx/
|-CMakeLists.txt
|-subx.h
|-subx.cpp
|-suby/
|-CMakeLists.txt
|-suby.h
|-suby.cpp
的main.cpp中是一個超級簡單的CPP項目:
//omitting all unnecessary code
int main() {
subx s;
s.defined_method();
s.another_defined_method(1);
return 0;
}
你可以假設,每個人的緣故,該SUBX和suby定義是正確的,工作得很好,因爲他們當我手工編譯時做。
當我通過CMake的編譯,我得到以下錯誤:
"/path/to/cmake" --build /path/to/Debug --target CS220_Project -- -j 4
Linking CXX executable simple_project
Undefined symbols for architecture x86_64:
"subx::defined_method()", referenced from:
_main in main.cpp.o
"subx::another_defined_method(int)", referenced from:
_main in main.cpp.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[3]: *** [simple_project] Error 1
make[2]: *** [CMakeFiles/simple_project.dir/all] Error 2
make[1]: *** [CMakeFiles/simple_project.dir/rule] Error 2
make: *** [simple_project] Error 2
根的CMakeLists.txt文件如下:
cmake_minimum_required(VERSION 2.8.4)
project(simple_project)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(SOURCE_FILES main.cpp)
add_subdirectory(sub)
add_executable(simple_project ${SOURCE_FILES})
子的CMakeLists.txt文件如下:
add_subdirectory(subx)
add_subdirectory(suby)
subx & suby CMakeLists.txt文件看起來:(它們包括它們各自的區別)
set(SUBX_SOURCES subx.cpp)
#Add any files in this directory
add_executable(SUBX ${SUBX_SOURCES})
我已經試過之類的東西add_library,文件(水珠)等,我不能,我的生活得到了在任何子目錄與main.cpp中程序編譯的文件。
你是先生,是神派。謝謝。 – lilott8 2014-10-16 22:42:27