我的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
的文件。
答案 0 :(得分:1)
你已经把一切都搞定了,你也忘记了链接库。复制target_link_library()
,你应该没问题。
答案 1 :(得分:0)
子项目应链接库,类似于可执行项目;因为依赖;你可以看一下CMake tutorial