2015-04-22 60 views
-2

我有以下設置:鏈接到庫目標從不同的子目錄

在一個文件夾lib

lib.h

#ifndef LIB_H_ 
#define LIB_H_ 

int fun(int i); 

#endif 

lib.c

#include "lib.h" 

int fun(int i) { 
    return i; 
} 

CMakeLists.txt

add_library(lib SHARED lib.c) 

在目錄src

的main.c

#include "lib.h" 
int main() { 
    return fun(0); 
} 

的CMakeLists.txt

add_executable(main main.c) 
target_link_libraries(lib) 

終於在他們共同的父目錄:

的CMakeLists.txt

include_directories(lib) 
add_subdirectory(lib) 
add_subdirectory(src) 

當我嘗試建立我的項目,

cmake 
make 

我得到下面的連接錯誤:

CMakeFiles/main.dir/main.o: In function `main': 
main.c:(.text+0xa): undefined reference to `fun' 

我在做什麼錯在這裏?

回答

1

你忘了你的電話到target_link_librariestarget參數,它應該是:

target_link_libraries(main lib) 
相關問題