在尝试将restbed与CMake链接时,我得到了常见的未定义函数错误。但是,尝试与g++ test.cpp -o test -lrestbed链接的完全相同的代码很好。
此外,当我第一次实现CMakeLists.txt时,它也运行得很好,当我将它添加到项目中时,它开始面临问题。现在,甚至没有定义一个restbed函数。
我的restbed包含在/usr/local/include上,共享对象在/usr/local/lib上链接。相当标准的地点。
CMakeLists.txt
cmake_minimum_required(VERSION 3.0)
project(vcar-server)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread -lrestbed")
file(GLOB CXX_EXEC "src/*.cpp")
add_subdirectory(vcar-embedded)
add_executable(vcar-server ${CXX_EXEC})
target_link_libraries(vcar-server vcar)发布于 2020-10-14 16:58:15
当将构建系统配置为用户时,不要使用CMAKE_CXX_FLAGS,或者使用它作为“最后的手段”。更喜欢使用对象模型代替全局变量。现代的cmake方式很可能是这样的:
cmake_minimum_required(VERSION 3.11)
project(vcar-server)
add_subdirectory(vcar-embedded)
find_package(Threads REQUIRED)
add_executable(vcar-server ${cxx_exec})
target_link_libraries(vcar-server PUBLIC vcar restbed Threads::Threads)
set_target_properties(vcar-server PUBLIC CXX_STANDARD 20)https://stackoverflow.com/questions/64358041
复制相似问题