ADD_EXECUTABLE(main main.cpp)
TARGET_LINK_LIBRARIES(main libhello.so)
INCLUDE_DIRECTORIES(/tmp/t3/include/hello /tmp/t3/lib)
LINK_DIRECTORIES(/tmp/t3/lib)
这种情况下会出错,说找不到引用,原因是ADD_EXECUTABLE出现在LINK_DIRECTORIES之前。正确的做法是将LINK_DIRECTORIES放在ADD_EXECUTABLE之前。如下:
LINK_DIRECTORIES(/tmp/t3/lib)
ADD_EXECUTABLE(main main.cpp)
TARGET_LINK_LIBRARIES(main libhello.so)
INCLUDE_DIRECTORIES(/tmp/t3/include/hello /tmp/t3/lib)
另外,官网不推荐使用INCLUDE_DIRECTORIES,原文如下:
Note that this command [link_directories] is rarely necessary. Library locations returned by find_package() and find_library() are absolute paths. Pass these absolute library file paths directly to the target_link_libraries() command. CMake will ensure the linker finds them.