Skip to content

Commit

Permalink
Merge pull request #2533 from mloskot/ml/cmake-keyword-target-commands
Browse files Browse the repository at this point in the history
CMake: Prefer keyword signature of target_link_libraries command
  • Loading branch information
kbevers authored Feb 14, 2021
2 parents 32d442d + 5fc8ab2 commit cd10468
Show file tree
Hide file tree
Showing 12 changed files with 38 additions and 41 deletions.
4 changes: 2 additions & 2 deletions docs/source/development/cmake.rst
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ the CMake configuration which comes with the library. Typical usage is:
find_package(PROJ)
target_link_libraries(MyApp ${PROJ_LIBRARIES})
target_link_libraries(MyApp PRIVATE ${PROJ_LIBRARIES})
By adding the imported library target ``${PROJ_LIBRARIES}`` to the
target link libraries, CMake will also pass the include directories to
Expand All @@ -36,7 +36,7 @@ package to work with pre-7.0 versions of PROJ, you will need to use
.. code::
find_package(PROJ4)
target_link_libraries(MyApp ${PROJ4_LIBRARIES})
target_link_libraries(MyApp PRIVATE ${PROJ4_LIBRARIES})
include_directories(${PROJ4_INCLUDE_DIRS})
This will also find version 7.0. This use of the PROJ4 name will be
Expand Down
2 changes: 1 addition & 1 deletion src/bin_cct.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ set(CCT_INCLUDE apps/optargpm.h)
source_group("Source Files\\Bin" FILES ${CCT_SRC})

add_executable(cct ${CCT_SRC} ${CCT_INCLUDE})
target_link_libraries(cct ${PROJ_LIBRARIES})
target_link_libraries(cct PRIVATE ${PROJ_LIBRARIES})
target_compile_options(cct PRIVATE ${PROJ_CXX_WARN_FLAGS})

install(TARGETS cct
Expand Down
2 changes: 1 addition & 1 deletion src/bin_cs2cs.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ set(CS2CS_SRC
source_group("Source Files\\Bin" FILES ${CS2CS_SRC})

add_executable(cs2cs ${CS2CS_SRC} ${CS2CS_INCLUDE})
target_link_libraries(cs2cs ${PROJ_LIBRARIES})
target_link_libraries(cs2cs PRIVATE ${PROJ_LIBRARIES})
target_compile_options(cs2cs PRIVATE ${PROJ_CXX_WARN_FLAGS})

install(TARGETS cs2cs
Expand Down
2 changes: 1 addition & 1 deletion src/bin_geod.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ set(GEOD_INCLUDE apps/geod_interface.h)
source_group("Source Files\\Bin" FILES ${GEOD_SRC} ${GEOD_INCLUDE})

add_executable(geod ${GEOD_SRC} ${GEOD_INCLUDE})
target_link_libraries(geod ${PROJ_LIBRARIES})
target_link_libraries(geod PRIVATE ${PROJ_LIBRARIES})
target_compile_options(geod PRIVATE ${PROJ_CXX_WARN_FLAGS})

install(TARGETS geod
Expand Down
2 changes: 1 addition & 1 deletion src/bin_geodtest.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ set(GEODTEST_INCLUDE)
source_group("Source Files\\Bin" FILES ${GEODTEST_SRC} ${GEODTEST_INCLUDE})

add_executable(geodtest ${GEODTEST_SRC} ${GEODTEST_INCLUDE})
target_link_libraries(geodtest ${PROJ_LIBRARIES})
target_link_libraries(geodtest PRIVATE ${PROJ_LIBRARIES})
target_compile_options(geodtest PRIVATE ${PROJ_CXX_WARN_FLAGS})

# Do not install, instead run as a test
Expand Down
2 changes: 1 addition & 1 deletion src/bin_gie.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ set(GIE_INCLUDE apps/optargpm.h)
source_group("Source Files\\Bin" FILES ${GIE_SRC})

add_executable(gie ${GIE_SRC} ${GIE_INCLUDE})
target_link_libraries(gie ${PROJ_LIBRARIES})
target_link_libraries(gie PRIVATE ${PROJ_LIBRARIES})
target_compile_options(gie PRIVATE ${PROJ_CXX_WARN_FLAGS})

install(TARGETS gie
Expand Down
2 changes: 1 addition & 1 deletion src/bin_proj.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ add_executable(binproj ${PROJ_SRC})
set_target_properties(binproj
PROPERTIES
RUNTIME_OUTPUT_NAME proj)
target_link_libraries(binproj ${PROJ_LIBRARIES})
target_link_libraries(binproj PRIVATE ${PROJ_LIBRARIES})
target_compile_options(binproj PRIVATE ${PROJ_CXX_WARN_FLAGS})

install(TARGETS binproj
Expand Down
2 changes: 1 addition & 1 deletion src/bin_projinfo.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ add_executable(binprojinfo ${PROJINFO_SRC})
set_target_properties(binprojinfo
PROPERTIES
OUTPUT_NAME projinfo)
target_link_libraries(binprojinfo ${PROJ_LIBRARIES})
target_link_libraries(binprojinfo PRIVATE ${PROJ_LIBRARIES})
target_compile_options(binprojinfo PRIVATE ${PROJ_CXX_WARN_FLAGS})

install(TARGETS binprojinfo
Expand Down
2 changes: 1 addition & 1 deletion src/bin_projsync.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ add_executable(bin_projsync ${PROJSYNC_SRC})
set_target_properties(bin_projsync
PROPERTIES
OUTPUT_NAME projsync)
target_link_libraries(bin_projsync ${PROJ_LIBRARIES})
target_link_libraries(bin_projsync PRIVATE ${PROJ_LIBRARIES})
target_compile_options(bin_projsync PRIVATE ${PROJ_CXX_WARN_FLAGS})
install(TARGETS bin_projsync
RUNTIME DESTINATION ${BINDIR})
Expand Down
12 changes: 6 additions & 6 deletions src/lib_proj.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -386,30 +386,30 @@ set(PROJ_LIBRARIES ${PROJ_LIBRARIES} PARENT_SCOPE)
if(UNIX)
find_library(M_LIB m)
if(M_LIB)
target_link_libraries(${PROJ_CORE_TARGET} -lm)
target_link_libraries(${PROJ_CORE_TARGET} PRIVATE -lm)
endif()
find_library(DL_LIB dl)
if(M_LIB)
target_link_libraries(${PROJ_CORE_TARGET} -ldl)
target_link_libraries(${PROJ_CORE_TARGET} PRIVATE -ldl)
endif()
endif()
if(USE_THREAD AND Threads_FOUND AND CMAKE_USE_PTHREADS_INIT)
target_link_libraries(${PROJ_CORE_TARGET} ${CMAKE_THREAD_LIBS_INIT})
target_link_libraries(${PROJ_CORE_TARGET} PRIVATE ${CMAKE_THREAD_LIBS_INIT})
endif()

target_include_directories(${PROJ_CORE_TARGET} PRIVATE ${SQLITE3_INCLUDE_DIR})
target_link_libraries(${PROJ_CORE_TARGET} ${SQLITE3_LIBRARY})
target_link_libraries(${PROJ_CORE_TARGET} PRIVATE ${SQLITE3_LIBRARY})

if(TIFF_ENABLED)
target_compile_definitions(${PROJ_CORE_TARGET} PRIVATE -DTIFF_ENABLED)
target_include_directories(${PROJ_CORE_TARGET} PRIVATE ${TIFF_INCLUDE_DIR})
target_link_libraries(${PROJ_CORE_TARGET} ${TIFF_LIBRARY})
target_link_libraries(${PROJ_CORE_TARGET} PRIVATE ${TIFF_LIBRARY})
endif()

if(CURL_ENABLED)
target_compile_definitions(${PROJ_CORE_TARGET} PRIVATE -DCURL_ENABLED)
target_include_directories(${PROJ_CORE_TARGET} PRIVATE ${CURL_INCLUDE_DIR})
target_link_libraries(${PROJ_CORE_TARGET} ${CURL_LIBRARY})
target_link_libraries(${PROJ_CORE_TARGET} PRIVATE ${CURL_LIBRARY})
endif()

if(MSVC AND BUILD_SHARED_LIBS)
Expand Down
2 changes: 1 addition & 1 deletion test/postinstall/testappprojinfo/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ foreach(_variableName ${_variableNames})
endforeach()

add_executable(testappprojinfo testappprojinfo.c)
target_link_libraries(testappprojinfo ${${USE_PROJ_NAME}_LIBRARIES})
target_link_libraries(testappprojinfo PRIVATE ${${USE_PROJ_NAME}_LIBRARIES})

include(CTest)

Expand Down
45 changes: 21 additions & 24 deletions test/unit/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,8 @@ add_executable(proj_errno_string_test
main.cpp
proj_errno_string_test.cpp)
target_link_libraries(proj_errno_string_test
GTest::gtest
${PROJ_LIBRARIES})
PRIVATE GTest::gtest
PRIVATE ${PROJ_LIBRARIES})
add_test(NAME proj_errno_string_test COMMAND proj_errno_string_test)
set_property(TEST proj_errno_string_test
PROPERTY ENVIRONMENT ${PROJ_TEST_ENVIRONMENT})
Expand All @@ -83,8 +83,8 @@ add_executable(proj_angular_io_test
main.cpp
proj_angular_io_test.cpp)
target_link_libraries(proj_angular_io_test
GTest::gtest
${PROJ_LIBRARIES})
PRIVATE GTest::gtest
PRIVATE ${PROJ_LIBRARIES})
add_test(NAME proj_angular_io_test COMMAND proj_angular_io_test)
set_property(TEST proj_angular_io_test
PROPERTY ENVIRONMENT ${PROJ_TEST_ENVIRONMENT})
Expand All @@ -93,8 +93,8 @@ add_executable(proj_context_test
main.cpp
proj_context_test.cpp)
target_link_libraries(proj_context_test
GTest::gtest
${PROJ_LIBRARIES})
PRIVATE GTest::gtest
PRIVATE ${PROJ_LIBRARIES})
add_test(NAME proj_context_test COMMAND proj_context_test)
set_property(TEST proj_context_test
PROPERTY ENVIRONMENT ${PROJ_TEST_ENVIRONMENT})
Expand All @@ -106,8 +106,8 @@ else()
main.cpp
pj_phi2_test.cpp)
target_link_libraries(pj_phi2_test
GTest::gtest
${PROJ_LIBRARIES})
PRIVATE GTest::gtest
PRIVATE ${PROJ_LIBRARIES})
add_test(NAME pj_phi2_test COMMAND pj_phi2_test)
set_property(TEST pj_phi2_test
PROPERTY ENVIRONMENT ${PROJ_TEST_ENVIRONMENT})
Expand All @@ -127,20 +127,19 @@ add_executable(proj_test_cpp_api
test_c_api.cpp
test_grids.cpp)
target_link_libraries(proj_test_cpp_api
GTest::gtest
${PROJ_LIBRARIES}
${SQLITE3_LIBRARY})
PRIVATE GTest::gtest
PRIVATE ${PROJ_LIBRARIES}
PRIVATE ${SQLITE3_LIBRARY})
add_test(NAME proj_test_cpp_api COMMAND proj_test_cpp_api)
set_property(TEST proj_test_cpp_api
PROPERTY ENVIRONMENT ${PROJ_TEST_ENVIRONMENT})


add_executable(gie_self_tests
main.cpp
gie_self_tests.cpp)
target_link_libraries(gie_self_tests
GTest::gtest
${PROJ_LIBRARIES})
PRIVATE GTest::gtest
PRIVATE ${PROJ_LIBRARIES})
add_test(NAME gie_self_tests COMMAND gie_self_tests)
set_property(TEST gie_self_tests
PROPERTY ENVIRONMENT ${PROJ_TEST_ENVIRONMENT})
Expand All @@ -151,34 +150,32 @@ add_executable(test_network
if(CURL_ENABLED)
include_directories(${CURL_INCLUDE_DIR})
target_compile_definitions(test_network PRIVATE -DCURL_ENABLED)
target_link_libraries(test_network ${CURL_LIBRARY})
target_link_libraries(test_network PRIVATE ${CURL_LIBRARY})
endif()
target_link_libraries(test_network
GTest::gtest
${PROJ_LIBRARIES}
${SQLITE3_LIBRARY})
PRIVATE GTest::gtest
PRIVATE ${PROJ_LIBRARIES}
PRIVATE ${SQLITE3_LIBRARY})
add_test(NAME test_network COMMAND test_network)
set_property(TEST test_network
PROPERTY ENVIRONMENT ${PROJ_TEST_ENVIRONMENT})


add_executable(test_defmodel
main.cpp
test_defmodel.cpp)
target_link_libraries(test_defmodel
GTest::gtest
${PROJ_LIBRARIES})
PRIVATE GTest::gtest
PRIVATE ${PROJ_LIBRARIES})
add_test(NAME test_defmodel COMMAND test_defmodel)
set_property(TEST test_defmodel
PROPERTY ENVIRONMENT ${PROJ_TEST_ENVIRONMENT})


add_executable(test_tinshift
main.cpp
test_tinshift.cpp)
target_link_libraries(test_tinshift
GTest::gtest
${PROJ_LIBRARIES})
PRIVATE GTest::gtest
PRIVATE ${PROJ_LIBRARIES})
add_test(NAME test_tinshift COMMAND test_tinshift)
set_property(TEST test_tinshift
PROPERTY ENVIRONMENT ${PROJ_TEST_ENVIRONMENT})

0 comments on commit cd10468

Please sign in to comment.