cmake build .so library

时间:2018-04-15 04:22:22

标签: c++ c cmake

我的CMakeLists.txt就在这里。

cmake_minimum_required(VERSION 3.9)
project(iemoji-lab)
set(CMAKE_CXX_STANDARD 14)

SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin)


add_executable(
        util
        src/util/util.cpp
)

target_link_libraries(
        util
        avformat
)

构建之后,我获得了util个可执行文件。如您所见,我必须将util与avformat中的ffmepg相关联。

现在我要构建一个名为.so的{​​{1}}文件。

我已经尝试过这样的事了。

libiemoji

但我收到了错误。

  

架构x86_64的未定义符号:     “_av_register_all”,引自:         util.cpp.o中的GetFrameCount(char const *)     “_avformat_alloc_context”,引自:         util.cpp.o中的GetFrameCount(char const *)     “_avformat_close_input”,引自:         util.cpp.o中的GetFrameCount(char const *)     “_avformat_free_context”,引自:         util.cpp.o中的GetFrameCount(char const *)     “_avformat_open_input”,引自:         util.cpp.o中的GetFrameCount(char const *)   ld:找不到架构x86_64的符号   clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)   gmake [2]: * [CMakeFiles / libiemoji.dir / build.make:95:liblibiemoji.dylib]错误1   gmake [1]:* [CMakeFiles / Makefile2:68:CMakeFiles / libiemoji.dir / all]错误2   gmake:*** [Makefile:84:all]错误2

那么如何生成cmake_minimum_required(VERSION 3.9) project(iemoji-lab) set(CMAKE_CXX_STANDARD 14) add_library( libiemoji SHARED src/util/util.cpp ) 库?

修改

在@Mario点之后,我得到了没有错误的解决方案。

.so

现在我收到了一个文件cmake_minimum_required(VERSION 3.9) project(iemoji-lab) set(CMAKE_CXX_STANDARD 14) SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin) add_library( iemoji SHARED src/util/util.cpp ) target_link_libraries( iemoji avformat ) 。我很困惑,因为我想生成一个扩展名为libiemoji.dyib的文件。

2 个答案:

答案 0 :(得分:1)

你已经把一切都搞定了,你也忘记了链接库。复制target_link_library(),你应该没问题。

答案 1 :(得分:0)

子项目应链接库,类似于可执行项目;因为依赖;你可以看一下CMake tutorial