Link 与 Cmake 一起休息
Link restbed with Cmake
在尝试 link 使用 CMake 休息时,我遇到了常见的未定义函数错误。但是,尝试使用 linked 与 g++ test.cpp -o test -lrestbed
完全相同的代码可以正常工作。
此外,当我第一次实施 CMakeLists.txt 时它也运行良好,当我添加到项目中时它开始面临问题。现在连一个休息床功能都没有定义。
我的休息床位于 /usr/local/include
,link 的共享对象位于 /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)
不要使用 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)
在尝试 link 使用 CMake 休息时,我遇到了常见的未定义函数错误。但是,尝试使用 linked 与 g++ test.cpp -o test -lrestbed
完全相同的代码可以正常工作。
此外,当我第一次实施 CMakeLists.txt 时它也运行良好,当我添加到项目中时它开始面临问题。现在连一个休息床功能都没有定义。
我的休息床位于 /usr/local/include
,link 的共享对象位于 /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)
不要使用 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)