Skip to content

cmake报错:Cannot determine link language

报错: cmake报错信息

cmake文件:

SHELL
cmake_minimum_required(VERSION 3.2)

project(ErrorMgr)

# 编译参数
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -pthread -fPIC -fpermissive")

# zmq 优化等级只能用O0
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 ")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O0 ")

include_directories(usr/include)
include_directories(${CMAKE_SOURCE_DIR}/core/framework/error-manager/include)

add_executable(ErrorManager src/)

target_link_libraries(ErrorManager yaml-cpp)

报错的意思是cmake不知道链接到哪种语言,原因有很多种,参考CMake unable to determine linker language with C++ - Stack Overflow之后,添加

set_target_properties(ErrorManager PROPERTIES LINKER_LANGUAGE CXX)

cmake成功,但是 make 时报错:

make报错

找不到 main() 函数。分析原因 add_executable(ErrorManager src/) 没找到源文件。

正确的写法:

CMakeList.txt
AUX_SOURCE_DIRECTORY(src/ SRC_LIST)
add_executable(ErrorManager ${SRC_LIST})

# add_executable(ErrorManager ${PROJECT_SOURCE_DIR}/src)  # Error
# add_executable(ErrorManager src/) # Error

基于 VitePress 构建