Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ CMake无法确定目标的链接器语言:C语言_C++_Cmake - Fatal编程技术网

C++ CMake无法确定目标的链接器语言:C语言

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

这是项目结构,它告诉我如何在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(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中提供源文件。但正如您所看到的,库中有许多源,您需要正确选择/调整这些源。预先构建库会更简单。