从不同的子目录链接到库目标

时间:2015-04-22 21:27:34

标签: c cmake

我有以下设置:

在文件夹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 个答案:

答案 0 :(得分:2)

您在target的来电中忘记了target_link_libraries参数,它应该是:

target_link_libraries(main lib)