cmake-examples icon indicating copy to clipboard operation
cmake-examples copied to clipboard

Why there's no need to use include_directories() in 01-basic\H-third-party-library

Open JunJieChenpete opened this issue 3 years ago • 2 comments

In 01-basic\H-third-party-library, the example project uses find_package(Boost 1.46.1 REQUIRED COMPONENTS filesystem system) to find the third-party-library Boost, but without using include_directories(${Boost_INCLUDE_DIRS}), how can the target find where the "XXX.h" files are? And in the file README.adoc, in Checking if the package is found part, the example uses include_directories(${Boost_INCLUDE_DIRS})

if(Boost_FOUND)
    message ("boost found")
    include_directories(${Boost_INCLUDE_DIRS})
else()
    message (FATAL_ERROR "Cannot find Boost")
endif()

In fact, without writing include_directories(${Boost_INCLUDE_DIRS}), the example project can compile and run without any problems, but it really confuse me whether I need to use include_directories(${XXX_INCLUDE_DIRS}) after using find_package(XXX) and why or why not.

JunJieChenpete avatar Dec 24 '21 11:12 JunJieChenpete

I think the reason is that boost has installed in default include path.

paangyubok avatar May 17 '22 15:05 paangyubok

therer is also another reason. The target_link_libraries(third_party_include )method will also get the INTERFACE_INCLUDE_DIRECTORIES of Boost::filesystem to it's INCLUDE_DIRECTORIES.

Nngxu avatar Apr 18 '23 07:04 Nngxu