111 lines
2.7 KiB
CMake
111 lines
2.7 KiB
CMake
cmake_minimum_required(VERSION 3.15)
|
|
project(airport_collision_avoidance)
|
|
|
|
# 打印调试信息
|
|
message(STATUS "CMAKE_SOURCE_DIR: ${CMAKE_SOURCE_DIR}")
|
|
message(STATUS "PROJECT_SOURCE_DIR: ${PROJECT_SOURCE_DIR}")
|
|
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
|
# MacOS 特定设置
|
|
|
|
set(BOOST_ROOT "/opt/homebrew/Cellar/boost/1.86.0_2")
|
|
message(STATUS "Setting BOOST_ROOT: ${BOOST_ROOT}")
|
|
|
|
# 添加 Homebrew 安装的包含路径
|
|
include_directories(
|
|
${BOOST_ROOT}/include
|
|
/opt/homebrew/include
|
|
)
|
|
link_directories(
|
|
${BOOST_ROOT}/lib
|
|
/opt/homebrew/lib
|
|
)
|
|
|
|
# 查找依赖包
|
|
find_package(Boost REQUIRED COMPONENTS system)
|
|
message(STATUS "Boost_INCLUDE_DIRS: ${Boost_INCLUDE_DIRS}")
|
|
message(STATUS "Boost_LIBRARIES: ${Boost_LIBRARIES}")
|
|
message(STATUS "Boost_VERSION: ${Boost_VERSION}")
|
|
|
|
find_package(nlohmann_json REQUIRED)
|
|
find_package(Threads REQUIRED)
|
|
|
|
# 明确列出所有源文件
|
|
set(SOURCES
|
|
src/main.cpp
|
|
src/collector/DataCollector.cpp
|
|
src/network/HTTPDataSource.cpp
|
|
)
|
|
|
|
# 明确列出所有头文件
|
|
set(HEADERS
|
|
src/types/VehicleData.h
|
|
src/collector/DataCollector.h
|
|
src/collector/DataSource.h
|
|
src/network/HTTPDataSource.h
|
|
src/network/ConnectionConfig.h
|
|
src/network/NetworkInterface.h
|
|
src/concurrent/ThreadPool.h
|
|
src/concurrent/LockFreeQueue.h
|
|
src/concurrent/LockFreeQueue.hpp
|
|
)
|
|
|
|
# 添加可执行文件
|
|
add_executable(${PROJECT_NAME} ${SOURCES} ${HEADERS})
|
|
|
|
# 设置包含目录
|
|
target_include_directories(${PROJECT_NAME}
|
|
PRIVATE
|
|
${CMAKE_CURRENT_SOURCE_DIR}/src
|
|
${Boost_INCLUDE_DIRS}
|
|
${BOOST_ROOT}/include
|
|
)
|
|
|
|
# 链接依赖库
|
|
target_link_libraries(${PROJECT_NAME}
|
|
PRIVATE
|
|
Boost::system
|
|
nlohmann_json::nlohmann_json
|
|
Threads::Threads
|
|
)
|
|
|
|
# MacOS 特殊处理
|
|
if(APPLE)
|
|
target_link_libraries(${PROJECT_NAME}
|
|
PRIVATE
|
|
"-framework CoreFoundation"
|
|
"-framework Security"
|
|
)
|
|
endif()
|
|
|
|
# 编译选项
|
|
if(MSVC)
|
|
target_compile_options(${PROJECT_NAME} PRIVATE /W4)
|
|
else()
|
|
target_compile_options(${PROJECT_NAME} PRIVATE -Wall -Wextra)
|
|
endif()
|
|
|
|
# 设置输出目录
|
|
set_target_properties(${PROJECT_NAME}
|
|
PROPERTIES
|
|
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
|
|
)
|
|
|
|
# 打印最终的编译和链接标志
|
|
message(STATUS "CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}")
|
|
message(STATUS "CMAKE_EXE_LINKER_FLAGS: ${CMAKE_EXE_LINKER_FLAGS}")
|
|
|
|
# 添加 Boost 相关的编译定义
|
|
target_compile_definitions(${PROJECT_NAME}
|
|
PRIVATE
|
|
BOOST_ASIO_NO_DEPRECATED
|
|
BOOST_ASIO_DISABLE_BOOST_ARRAY
|
|
)
|
|
|
|
# 打印所有包含目录
|
|
get_property(dirs DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY INCLUDE_DIRECTORIES)
|
|
foreach(dir ${dirs})
|
|
message(STATUS "Include dir: ${dir}")
|
|
endforeach() |