Skip to content
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

Open
jacobschloss opened this issue Jun 19, 2024 · 8 comments
Open
Labels

Comments

@jacobschloss
Copy link

jacobschloss commented Jun 19, 2024

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

include_directories(cryptoauth PUBLIC ${CMAKE_CURRENT_BINARY_DIR}

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.

@jacobschloss
Copy link
Author

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.

@Srinivas-E
Copy link
Collaborator

Hi @jacobschloss
Thanks for sharing your observations.
We shall check this and review for the required changes.
Since the downstream sources needs to be in sync, we shall absorb it as per planned our planned release process

Copy link

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

@github-actions github-actions bot added the Stale label Aug 24, 2024
@jacobschloss
Copy link
Author

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

@github-actions github-actions bot removed the Stale label Aug 25, 2024
@AriyaKrishnanAK
Copy link

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
Navigate to the cryptoauth Library Directory: Open a terminal and navigate to the directory where the cryptoauth library is located.
Copy sh

cd path/to/cryptoauth
Build and Install the Library: Run the following commands to build and install the cryptoauth library. This will copy the necessary files to your system's library and include directories.
Copy sh

mkdir build
cd build
cmake ..
make
sudo make install
The sudo make install command may require administrative privileges, depending on your system configuration.

Step 2: Link the cryptoauth Library with Your Project
Create a New CMake Project: Create a new CMake project or navigate to your existing project directory.

Modify Your CMakeLists.txt File: Update your CMakeLists.txt file to find and link the cryptoauth library.

@jacobschloss
Copy link
Author

jacobschloss commented Sep 11, 2024

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.

@jacobschloss
Copy link
Author

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.

Copy link

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

@github-actions github-actions bot added the Stale label Nov 10, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants