Will set it to /Users/YOURNAME/code/cpp/someLibrary/install Detecting CXX compile features - done - This project is a top-level one Detecting CXX compiler ABI info - done - Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ - skipped Detecting C compile features - done - Detecting CXX compiler ABI info Detecting C compiler ABI info - done - Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc - skipped The CXX compiler identification is AppleClang 12.0032 The C compiler identification is AppleClang 12.0032 Having it, if you now try to find your package in external project ( cmake-library-example/external-project/CMakeLists.txt) like this: The write_basic_package_version_file() function from above will create SomeLibrar圜onfigVersion.cmake file in the install folder. Target_include_directories( $Targets.cmake" Knowing that, here’s how you can check if you are in the top-level project or not: This variable persists across all the nested projects, and so calling project command from nested projects will not change CMAKE_PROJECT_NAME, but will set another variable called PROJECT_NAME. It stores the top-level project name that you set with project command. In CMake projects there is a variable called CMAKE_PROJECT_NAME. So let’s gradually create a CMakeLists.txt for the library project. will you need to have it as DLL on WindowsĮverything from this list is handled by CMake.when its sources are nested in their source tree.when they are using it pre-built as an external dependency.how other applications can find the library.where install artifacts should be placed.what artifacts should the library produce at install step.Here are some of the things you need to take care of: But doing just that would be too easy, wouldn’t it. Making a library with CMake is not that different from making an application - instead of add_executable you call add_library. #include const std ::string someString = "some string" CMakeLists | About target_link_libraries() scopesįor the sake of focusing on CMake side of things, the library itself is very trivial:. Adding nested library to the main project.No need to set include_directories and use magic variables.To clarify, this will be about so-called normal kind of library. All of the sudden I found myself in a situation that I have been successfully avoiding so far - I needed to make a C++ library with CMake.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |