I'm trying to include asio boost
using CMake
in my project but I'm getting this error. libraries linking is working in VS
but I don't know how to link them in Cmake
project.
Working Solution with VS:-
asio boost version: 1.24.0
cmake_minimum_required(VERSION 3.10)
project(networking_examples)
#set(CMAKE_CXX_COMPILER D:/System/msys2/mingw64/bin/clang )
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# Link Boost Asio library
target_include_directories(networking_examples PRIVATE "./asio-1.24.0/include")
add_executable(
networking_examples
./src/index.cpp
)
I want to link
./asio-1.24.0/include
with my project usingCMAKE
.
Error:
CMake Error at CMakeLists.txt:9 (target_include_directories):
Cannot specify include directories for target "networking_examples" which
is not built by this project.
-- Configuring incomplete, errors occurred!
See also "D:/Git Repo/c /networking/cmake-build-debug/CMakeFiles/CMakeOutput.log".
CodePudding user response:
When you use target_include_directories
there is not target named networking_examples
. You add that target after.
Order matters, and just like in C symbols must be defined before they can be used.
So you need to change to:
add_executable(
networking_examples
./src/index.cpp
)
# Asio library header directory
target_include_directories(networking_examples PRIVATE "./asio-1.24.0/include")
On another couple of notes: First you don't seem to be using Boost ASIO but rather the standalone header-only library.
Secondly, you don't link with the library (it's a header-only library). You only tell the build-system where it can find the ASIO header files.