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