C++ CMake无法确定目标的链接器语言:C语言
这是项目结构,它告诉我如何在cpp目录中包含库,C++ CMake无法确定目标的链接器语言:C语言,c++,cmake,C++,Cmake,这是项目结构,它告诉我如何在cpp目录中包含库, libavcodec,libavutil是ffmpeg中的子文件夹 这里是CMakeList.txt cmake_minimum_required(VERSION 3.4.1) set(CMAKE_C_STANDARD 17) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_FLAGS "-D__STDC_CONSTANT_MACROS") #project(libavcodec) #project(lib
libavcodec
,libavutil
是ffmpeg
中的子文件夹
这里是CMakeList.txt
cmake_minimum_required(VERSION 3.4.1)
set(CMAKE_C_STANDARD 17)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_FLAGS "-D__STDC_CONSTANT_MACROS")
#project(libavcodec)
#project(libavutil)
#set_target_properties(libavcodec PROPERTIES LINKER_LANGUAGE C)
set(AVCODEC_FILES libavcodec/libavcodec.v)
set(AVUTIL_FILES libavutil/libavutil.v)
add_executable(libavcodec ${AVCODEC_FILES})
target_include_directories(libavcodec PRIVATE
$<BUILD_INTERFACE: ${AVCODEC_FILES} >
$<INSTALL_INTERFACE: ${AVCODEC_FILES} >
)
#target_link_libraries(ffmpeg PRIVATE ${AVCODEC_FILES} ${AVUTIL_FILES})
cmake_最低要求(3.4.1版)
套装(CMAKE_C_标准17)
套装(CMAKE_CXX_标准17)
设置(CMAKE\U CXX\U标志“-D\U STDC\U常量\U宏”)
#项目(libavcodec)
#项目(libavutil)
#设置\u目标\u属性(libavcodec属性链接器\u语言C)
设置(AVCODEC_文件libavcodec/libavcodec.v)
set(AVUTIL_文件libavutil/libavutil.v)
添加_可执行文件(libavcodec${AVCODEC_文件})
目标目录包括目录(libavcodec专用
$
$
)
#目标链接库(ffmpeg专用${AVCODEC_文件}${AVUTIL_文件})
我越来越
CMake错误:CMake无法确定目标的链接器语言:
libavcodec无法计算生成系统
注意:FFMPEG是用
C
语言编写的。“FFMPEG是用C语言编写的。”-但是作为libavcodec
库的唯一源传递的文件不是C文件。这是链接器的文件,因此您的库中没有源文件。@Tsyvarev我将其更改为集(AVCODEC\u files libavcodec)
,但仍然会遇到相同的错误。您希望实际实现什么?是否要从源代码构建libavcodec
库?然后您需要指定源文件(.c
个)。如果您已经有了libavcodec
并希望与之链接,请参见以下问题:(如果您遵循,请在声明库目标时注意IMPORTED
关键字)。实际上,我已经从下载了源代码,我想在我的应用程序中使用它。我不知道怎么做。在一些老帖子中,他们先创建了.so文件,然后将其添加到Android Studio中,但据我猜测,我们可以直接添加源代码。这就是我现在正在尝试的。正如我所说的,如果您想从源代码构建库,您需要在add\u library
call中提供源文件。但正如您所看到的,库中有许多源,您需要正确选择/调整这些源。预先构建库会更简单。