-
Notifications
You must be signed in to change notification settings - Fork 221
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
cryptoauth target does not propagate header path to other projects #379
Comments
The current call to include_directories seems to add a non-existent "cryptoauth" dir to the path for this file scope. I assume this isn't needed. |
Hi @jacobschloss |
This issue has been marked as stale - please confirm the issue still exists with the latest version of the library and update the issue if it remains |
yes |
Hi @jacobschloss, You can use the make install command to install the cryptoauth library. Here are the steps to do so and how to link the library with your project: Step 1: Install the cryptoauth Library cd path/to/cryptoauth mkdir build Step 2: Link the cryptoauth Library with Your Project Modify Your CMakeLists.txt File: Update your CMakeLists.txt file to find and link the cryptoauth library. |
Yes, but this way I do not need to install the library and the list of directories needed is picked up by CMake in my parent project. I am building cryptoauthlib from source as a cmake sub-project as we are building it for a matrix of 3 OS targets and 3 cpu architectures (eg, 9 build targets, 27 build targets including debug and MinSizeRel) and do I not want to manage archiving and distributing binaries separately for this library. It is much easier to handle as an in-tree source dependency as it compiles fast. I have a local fork of cryptoauthlib with a patch to use target_include_directories applied. My feedback is just that is is normal for cmake library build targets to set their include directories with target_include_directories so that the list of required header directories is propagated upwards to consuming projects. |
What I mean is using target_include_directories instead of include_directories will make building as a nested cmake project work, which is a common and useful set up especially when dealing with multi-arch. |
This issue has been marked as stale - please confirm the issue still exists with the latest version of the library and update the issue if it remains |
Describe the bug
The cmake target "cryptoauth" does not declare its headers with target_include_directories, so other projects that use this library do not automatically pick up all of the needed header paths when linking.
To Reproduce
Create a new cmake project that uses this library as a submodule. Create a small executable and link with target_link_libraries(foo PUBLIC cryptoauth).
As the needed header dirs are not exported with the cryptoauth target, the build will fail with
fatal error: cryptoauthlib.h: No such file or directory
Expected behavior
Clean build
Additional context
Changing include_directories to target_include_directories at cryptoauthlib/lib/CMakeLists.txt
cryptoauthlib/lib/CMakeLists.txt
Line 309 in 405d831
seems to work, the headers are correctly propagated to another exe that links to cryptoauth and it builds without manually setting the header search path. May also need to change something for OPENSSL support / L326 if ATCA_OPENSSL is set.
The text was updated successfully, but these errors were encountered: