On 19.06.19 12:42, dexter810 wrote: > cmake_minimum_required(VERSION 3.6) > project(main CXX C) > > add_executable(main main.cpp) > > set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Iinclude > -Ibuild/deps/yara/src/yara/libyara/include -Lbuild/src > -Lbuild/deps/yara/src/yara/libyara/.libs/") > > > target_link_libraries (main yaracpp yara pthread ssl crypto) > > > But this was not able to link it properly and threw errors that it cannot > find "yaracpp/yaracpp.h". The references for writing CMakeLists.txt like > this were: > > https://stackoverflow.com/questions/43136418/how-to-add-l-ell-compiler-flag-in-cmake > > https://stackoverflow.com/questions/53879422/how-to-set-g-compile-options-in-clion?answertab=oldest#tab-top
Since you don't include the error messages from the compiler, we are reduced to guessing here: 1) Don't add -I flags to compiler command line by modifying the CMAKE_CXX_FLAGS directly. Instead, use either the include_directories command (if you want to specify the include directories for multiple targets), or the target_include_directories command: target_include_directories(main PRIVATE include build/deps/yara/src/yara/libyara/include) 2) CMAKE_CXX_FLAGS is used for compiling, not linking. One way to get the linker command line you want is to change target_link_libraries (main yaracpp yara pthread ssl crypto) to target_link_libraries (main -Lbuild/src build/deps/yara/src/yara/libyara/.libs -lyaracpp -lyara pthread ssl crypto) However, better practice would be to create import targets for the libraries you want to use. For example (assuming that yaracpp is a shared library): add_library(yaracpp SHARED IMPORTED) set_target_properties(yaracpp PROPERTIES IMPORTED_LOCATION "build/deps/yara/src/yara/libyara/.libs/libyara.so" INTERFACE_INCLUDE_DIRECTORIES "build/deps/yara/src/yara/libyara/include") Then, you simply add yaracpp to your target_link_libraries command and can skip the target_include_directories command. Even better practice would be to use the find_library command to find the libyara library - this way, your CMakelists.txt would also work for non-Unix target systems like Windows. For more information, I highly recommend reading the CMake documentation, particularly https://cmake.org/cmake/help/v3.15/manual/cmake-buildsystem.7.html -- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: https://cmake.org/mailman/listinfo/cmake