ttroy50 / cmake-examples

Useful CMake Examples
http://ttroy50.github.io/cmake-examples
MIT License
12.4k stars 2.5k forks source link

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

Open JunJieChenpete opened 2 years ago

JunJieChenpete commented 2 years ago

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.

paangyubok commented 2 years ago

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

Nngxu commented 1 year ago

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.