CMake - Build only listed Boost libraries in find_package

1.4k views Asked by At

I am trying to install boost using cmake for my project. From a little study I found that one of the recommended ways to install boost libraries is to use the cmake command find_package (How do you add Boost libraries in CMakeLists.txt?). Below is the command I added in my cmake file

find_package(Boost 1.78 REQUIRED COMPONENTS filesystem nowide)

However, when cmake generates the cache file, it downloads and builds way more boost libraries(if not all) than that are listed above. See the outputs from the commandline below:

1> [CMake]   * boost-algorithm[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-algorithm\eca5eb57117afd2c43e7f00ed6908dabb254b46e
1> [CMake]   * boost-align[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-align\1733cf10f4a598f29af7380a6b8226abdeeb3f75
1> [CMake]   * boost-array[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-array\8278959d326c44d846d660462556ab48361054f9
1> [CMake]   * boost-asio[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-asio\2fcf35cb168a6a2aa56208a83fb71bfdf88672b6
1> [CMake]   * boost-assert[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-assert\81b29f057d38140b3d812094999772d2d5263d4e
1> [CMake]   * boost-atomic[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-atomic\f516c90064f41a11fe7627ab6a8ac281455f55cc
1> [CMake]   * boost-bind[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-bind\165c77e05b1d413a600f66135276ba7e727ebc35
1> [CMake]   * boost-build[core]:x64-windows -> 1.78.0#1 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-build\cf970c17a4bf6d59deff7ce7e7eb98cec74b544a
1> [CMake]   * boost-chrono[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-chrono\d08ea7bd6fb471393e10507f0b6d27d045868f3e
1> [CMake]   * boost-concept-check[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-concept-check\d92ec4f75e3ca2046f7cc6bd42e394aa642dea7b
1> [CMake]   * boost-config[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-config\b4958f142255c3aa14f1f39d04edcc12b6262745
1> [CMake]   * boost-container[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-container\cba0ae7cefffcca3cc1a0aec45ec07a66f6cc413
1> [CMake]   * boost-container-hash[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-container-hash\5c9a0efa908886517e39510cffaebe78df8bac17
1> [CMake]   * boost-context[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-context\c279fc4862dbbc9b4c685d16d1abee7200f9dff4
1> [CMake]   * boost-conversion[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-conversion\ed01d578d9964b2be3619cd7e96c6f65dc206275
1> [CMake]   * boost-core[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-core\b6d811257b985253c87570f25a75957689b2b895
1> [CMake]   * boost-coroutine[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-coroutine\d462e16750c6769375391d1e1c084999000cb324
1> [CMake]   * boost-date-time[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-date-time\76bf565e940322a7d3110edf1b18fb4bfd8a1ab0
1> [CMake]   * boost-detail[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-detail\61c65e46d0bf619e44cf343d734dda6987f53005
1> [CMake]   * boost-exception[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-exception\02b0e67c7d9b5e26b1bccef1fba3152fe7ead595
1> [CMake]     boost-filesystem[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-filesystem\f7f7b3bf671f25f6234f81de59fb5dc169ea2480
1> [CMake]   * boost-function[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-function\74d9b1e1e9951fe6f6f4eeccddf8c83ff1280462
1> [CMake]   * boost-function-types[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-function-types\94d4dd365c29ad1be2d148f3c4cf7857e3ac1edd
1> [CMake]   * boost-fusion[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-fusion\a7c7b4de2e38c3436c0781ccf4b56567b8c2ae61
1> [CMake]   * boost-integer[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-integer\18f2f923e2a8d4f026787eb8626def460dd2ab6a
1> [CMake]   * boost-intrusive[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-intrusive\351ad9aa5db5bf50ab87a390a69d5df1d2b41ab7
1> [CMake]   * boost-io[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-io\33cc953c79a65bcdfdd7b55a757bf3f4ac4be4bf
1> [CMake]   * boost-iterator[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-iterator\474aefb2b63e5ea3e6794631eab47aa3d6921573
1> [CMake]   * boost-lexical-cast[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-lexical-cast\984ca6d42fd857c08fa915edc02bfcecb02cc343
1> [CMake]   * boost-modular-build-helper[core]:x64-windows -> 1.78.0#2 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-modular-build-helper\9400b3bfdc93a165b3b509a76c59107c020113a6
1> [CMake]   * boost-move[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-move\a2b516a6391277e0c72147caf8c6677c92bff2a8
1> [CMake]   * boost-mp11[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-mp11\06e8d1438943e47b1b4282964a0d290461ba3387
1> [CMake]   * boost-mpl[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-mpl\a8b09063ef7fce74a9bfc52625ea7bf285cf4a82
1> [CMake]     boost-nowide[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-nowide\c38c862892bc328c743481ee48b3abf50e66a51f
1> [CMake]   * boost-numeric-conversion[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-numeric-conversion\11dcb5d23dd6b1db7138ffe608d76134ce1e4ec5
1> [CMake]   * boost-optional[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-optional\4171d6f66bb828d51bee3de777da9384232b6068
1> [CMake]   * boost-pool[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-pool\8c0061ca841cab5b588ebae9bd1387882eec3435
1> [CMake]   * boost-predef[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-predef\1865984507efa465dea0f7d597528cfedcef0b7e
1> [CMake]   * boost-preprocessor[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-preprocessor\e69da51c3ec0a8086ab18dbf75da11649aed5157
1> [CMake]     boost-process[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-process\669ff76873e507b50238609e17bb0208559cd224
1> [CMake]   * boost-range[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-range\1ec82281ed52b6d4ae225abe93a18392c846cbc9
1> [CMake]   * boost-ratio[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-ratio\a5e0af272c7df2d7994c6d98ad1d76df6b5330f7
1> [CMake]   * boost-rational[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-rational\2a2877b20057e313af02d1307832d90f764b2dc1
1> [CMake]   * boost-regex[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-regex\f04cda8dcb436a4cfaa008331d05ef2d0974b698
1> [CMake]   * boost-smart-ptr[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-smart-ptr\18806e0372da7b7f8b2d6a8ff4bd7bf074a690cd
1> [CMake]   * boost-static-assert[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-static-assert\0d1e3a21f0be997c400b7c60dc2ec1b1beccbe3c
1> [CMake]   * boost-system[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-system\eaab2373181b829bf4cb4ee298dfc9c80e98f01f
1> [CMake]   * boost-throw-exception[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-throw-exception\2ab1c68ab2a41696a5f36841a66178256b8d229e
1> [CMake]   * boost-tokenizer[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-tokenizer\24c6aef67afefb01d20749d7b43790efcb1dfc66
1> [CMake]   * boost-tuple[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-tuple\da0a88c5630fa116b473e02aae6651199529649e
1> [CMake]   * boost-type-index[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-type-index\fac6a10bb329da6cd19cfde9534ef11b3edb8623
1> [CMake]   * boost-type-traits[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-type-traits\8ce0cad0c57f4acd5da2369894a0db64b918ac41
1> [CMake]   * boost-typeof[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-typeof\478fadf37863e72ec547e1a7620da6a28cc85c7d
1> [CMake]   * boost-uninstall[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-uninstall\996078abceb6009fb2841dd97edc5246e8bd38aa
1> [CMake]   * boost-unordered[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-unordered\c55ee280fedefd69dba819a4d768d5a5e132f9b9
1> [CMake]   * boost-utility[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-utility\4e39c1737260328064c10b743aba90788efc467a
1> [CMake]   * boost-variant2[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-variant2\30915b5f5005d9b166f4349f493b4f7314d84c17
1> [CMake]   * boost-vcpkg-helpers[core]:x64-windows -> 1.78.0#1 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-vcpkg-helpers\2b601d13ad505473bac3d555d9e543d981c46565
1> [CMake]   * boost-winapi[core]:x64-windows -> 1.78.0 -- C:\tools\vcpkg\buildtrees\versioning_\versions\boost-winapi\8492201c09a250964609eea910b3d37c9895d411

Is there a way to only build the listed boost libraries in my find_package command?

1

There are 1 answers

0
Pāvels Žuravļovs On

With vcpkg you definitely can install specific Boost modules (filesystem and nowide in your case). From https://vcpkg.io/en/packages.html:

  • .\vcpkg install boost-filesystem
  • .\vcpkg install boost-nowide

With find_package you're linking already compiled and installed package (e.g. SMFL or any other lib) to your project, not actually compiling it. See this link if you'd like to know how others tried to integrate CMake system to build Boost.