Link 到不同子目录的库目标
Link to library target from different subdirectory
我有以下设置:
在文件夹中 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'
我做错了什么?
您在调用 target_link_libraries
时忘记了 target
参数,它应该是:
target_link_libraries(main lib)
我有以下设置:
在文件夹中 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'
我做错了什么?
您在调用 target_link_libraries
时忘记了 target
参数,它应该是:
target_link_libraries(main lib)