From bf75c03218a72987fae1a6bbd69b65bca83496dd Mon Sep 17 00:00:00 2001 From: Gold856 <117957790+Gold856@users.noreply.github.com> Date: Thu, 11 Jul 2024 18:01:05 -0400 Subject: [PATCH] [build] Clean up CMake files (#6802) Explicitly list required components when using FindJava and FindJNI Consolidate find_package calls for Java, JNI, and OpenCV into the root CMakeLists.txt file Remove references to main_lib_dest Install missing generated headers Flatten some if statements Use LinkMacOSGUI macro instead of hand rolling it Stop installing OpenCV libraries and an extra ntcorejni library; OpenCV JAR will still be installed to make it easy to use Only print platform version on Windows Prevent GUI modules from being built when wpimath is off, which would otherwise cause a build failure Simplify build configuration checks Clean up fieldImages JAR creation Place built JARs in the same subdir as installed JARs Remove unnecessary JAR includes Remove extra directories in target_include_directories Improve CMake docs --- CMakeLists.txt | 103 ++++----------------------- README-CMAKE.md | 11 ++- apriltag/CMakeLists.txt | 15 ++-- cameraserver/CMakeLists.txt | 9 +-- cmake/modules/OptionValidation.cmake | 29 ++++++++ cscore/CMakeLists.txt | 75 ++++--------------- fieldImages/CMakeLists.txt | 9 +-- hal/CMakeLists.txt | 5 +- imgui/CMakeLists.txt | 13 ++-- ntcore/CMakeLists.txt | 13 +--- romiVendordep/CMakeLists.txt | 6 +- simulation/halsim_xrp/CMakeLists.txt | 2 +- wpigui/CMakeLists.txt | 12 ++-- wpilibNewCommands/CMakeLists.txt | 8 ++- wpilibc/CMakeLists.txt | 2 +- wpilibj/CMakeLists.txt | 5 +- wpimath/CMakeLists.txt | 9 +-- wpinet/CMakeLists.txt | 7 +- wpiunits/CMakeLists.txt | 8 ++- wpiutil/CMakeLists.txt | 38 +++------- xrpVendordep/CMakeLists.txt | 6 +- 21 files changed, 132 insertions(+), 253 deletions(-) create mode 100644 cmake/modules/OptionValidation.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index ace8da8190..4010ef9eb2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,6 +12,7 @@ endif() if("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows") set(CMAKE_SYSTEM_VERSION 10.0.18362.0 CACHE STRING INTERNAL FORCE) set(CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION 10.0.18362.0 CACHE STRING INTERNAL FORCE) + message(STATUS "Platform version: ${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}") endif() cmake_minimum_required(VERSION 3.11) @@ -23,11 +24,10 @@ if(POLICY CMP0135) cmake_policy(SET CMP0135 NEW) endif() -message(STATUS "Platform version: ${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}") - set(WPILIB_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}) include(CPack) +include(OptionValidation) set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE) set_property(GLOBAL PROPERTY USE_FOLDERS ON) @@ -35,7 +35,6 @@ set_property(GLOBAL PROPERTY USE_FOLDERS ON) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${WPILIB_BINARY_DIR}/lib) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${WPILIB_BINARY_DIR}/lib) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${WPILIB_BINARY_DIR}/bin) -set(CMAKE_JAVA_TARGET_OUTPUT_DIR ${WPILIB_BINARY_DIR}/jar) # use, i.e. don't skip the full RPATH for the build tree set(CMAKE_SKIP_BUILD_RPATH FALSE) @@ -87,28 +86,6 @@ if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "" FORCE) endif() -if(WITH_JAVA AND NOT BUILD_SHARED_LIBS) - message( - FATAL_ERROR - " -FATAL: Cannot build static libs with Java enabled. - Static libs requires both BUILD_SHARED_LIBS=OFF and - WITH_JAVA=OFF -" - ) -endif() - -if(WITH_SIMULATION_MODULES AND NOT BUILD_SHARED_LIBS) - message( - FATAL_ERROR - " -FATAL: Cannot build static libs with simulation modules enabled. - Static libs requires both BUILD_SHARED_LIBS=OFF and - WITH_SIMULATION_MODULES=OFF -" - ) -endif() - if(NOT WITH_JAVA OR NOT WITH_CSCORE) if(NOT "${OPENCV_JAVA_INSTALL_DIR}" STREQUAL "") message( @@ -121,81 +98,24 @@ It will be ignored. endif() endif() -if(NOT WITH_WPILIB AND WITH_SIMULATION_MODULES) - message( - FATAL_ERROR - " -FATAL: Cannot build simulation modules with wpilib disabled. - Enable wpilib by setting WITH_WPILIB=ON -" - ) -endif() +wpilib_config(OPTIONS WITH_JAVA REQUIRES BUILD_SHARED_LIBS) -if(NOT WITH_NTCORE AND WITH_CSCORE) - message( - FATAL_ERROR - " -FATAL: Cannot build cameraserver without ntcore. - Enable ntcore by setting WITH_NTCORE=ON -" - ) -endif() +wpilib_config(OPTIONS WITH_SIMULATION_MODULES REQUIRES BUILD_SHARED_LIBS WITH_WPILIB WITH_NTCORE) -if(NOT WITH_NTCORE AND WITH_GUI) - message( - FATAL_ERROR - " -FATAL: Cannot build GUI modules without ntcore. - Enable ntcore by setting WITH_NTCORE=ON -" - ) -endif() +wpilib_config(OPTIONS WITH_CSCORE REQUIRES WITH_NTCORE) -if(NOT WITH_NTCORE AND WITH_SIMULATION_MODULES) - message( - FATAL_ERROR - " -FATAL: Cannot build simulation modules without ntcore. - Enable ntcore by setting WITH_NTCORE=ON -" - ) -endif() +wpilib_config(OPTIONS WITH_GUI REQUIRES WITH_NTCORE WITH_WPIMATH) -if(NOT WITH_NTCORE AND WITH_WPILIB) - message( - FATAL_ERROR - " -FATAL: Cannot build wpilib without ntcore. - Enable ntcore by setting WITH_NTCORE=ON -" - ) -endif() +wpilib_config(OPTIONS WITH_WPILIB REQUIRES WITH_NTCORE WITH_WPIMATH) -if(NOT WITH_WPIMATH AND WITH_WPILIB) - message( - FATAL_ERROR - " -FATAL: Cannot build wpilib without wpimath. - Enable wpimath by setting WITH_WPIMATH=ON -" - ) -endif() - -if(NOT WITH_WPIUNITS AND WITH_WPIMATH AND WITH_JAVA) - message( - FATAL_ERROR - " -FATAL: Cannot build Java wpimath without wpiunits. - Enable wpiunits by setting WITH_WPIUNITS=ON or disable the Java build by setting WITH_JAVA=OFF -" - ) -endif() +wpilib_config(OPTIONS WITH_WPIMATH WITH_JAVA REQUIRES WITH_WPIUNITS) set(include_dest include) set(java_lib_dest java) -set(jni_lib_dest jni) -if(WITH_JAVA) +if(WITH_JAVA OR WITH_JAVA_SOURCE) set(CMAKE_JAVA_COMPILE_FLAGS "-encoding" "UTF8" "-Xlint:unchecked") + find_package(Java REQUIRED COMPONENTS Development) + find_package(JNI REQUIRED COMPONENTS JVM) endif() find_package(LIBSSH 0.7.1) @@ -382,6 +302,7 @@ endif() if(WITH_CSCORE) set(CAMERASERVER_DEP_REPLACE "find_dependency(cameraserver)") set(CSCORE_DEP_REPLACE "find_dependency(cscore)") + find_package(OpenCV REQUIRED) add_subdirectory(cscore) add_subdirectory(cameraserver) endif() diff --git a/README-CMAKE.md b/README-CMAKE.md index 7742900f9e..e52d77ec2e 100644 --- a/README-CMAKE.md +++ b/README-CMAKE.md @@ -108,6 +108,12 @@ After build, the easiest way to use the libraries is to install them. Run the fo sudo cmake --build . --target install ``` +## Preparing to use the installed libraries + +On Windows, make sure the directories for the libraries you built are on PATH. For wpilib, the default install location is `C:\Program Files (x86)\allwpilib`. If you built other libraries like OpenCV and protobuf from source, install them, and add the install directories to PATH. This ensures CMake can locate the libraries. + +You will also want to add the directories where the DLLs are located (usually the `bin` subdirectory of the install directory) to PATH so they can be loaded by your program. If you are using OpenCV and Java, the `opencv_java` DLL is located in either the `lib` subdirectory if you built but didn't install OpenCV, or the `java` subdirectory if you did install OpenCV. + ## Using the installed libraries for C++. Using the libraries from C++ is the easiest way to use the built libraries. @@ -134,12 +140,11 @@ cmake /path/to/folder/containing/CMakeLists After that, run `cmake --build .`. That will create your executable. Then you should be able to run `./my_vision_app` to run your application. - ## Using the installed libraries for Java -Using the built JARs is move involved than using the C++ libraries, but mostly consists of adding the correct directories to PATH. +Using the built JARs is more involved than using the C++ libraries, but the additional work involves providing the paths to various libraries and JARs when needed. -Add the directory where the JARs are located (e.g, `/usr/local/java`) to PATH. If you are on Windows, you also need to add the `lib`, `bin`, and `share` directories to PATH. Then, create a new folder to contain your project. Add the following code below to a `CMakeLists.txt` file in that directory. +Create a new folder to contain your project. Add the following code below to a `CMakeLists.txt` file in that directory. ```cmake cmake_minimum_required(VERSION 3.11) diff --git a/apriltag/CMakeLists.txt b/apriltag/CMakeLists.txt index e6b9aa6f97..28a2751d57 100644 --- a/apriltag/CMakeLists.txt +++ b/apriltag/CMakeLists.txt @@ -27,8 +27,6 @@ set(APRILTAGLIB_SRCS file(GLOB apriltag_jni_src src/main/native/cpp/jni/AprilTagJNI.cpp) if(WITH_JAVA) - find_package(Java REQUIRED) - find_package(JNI REQUIRED) include(UseJava) set(CMAKE_JNI_TARGET true) @@ -47,8 +45,6 @@ if(WITH_JAVA) NO_DEFAULT_PATH ) - set(CMAKE_JAVA_INCLUDE_PATH apriltag.jar ${EJML_JARS} ${JACKSON_JARS}) - file(GLOB_RECURSE JAVA_SOURCES src/main/java/*.java) file( GLOB_RECURSE JAVA_RESOURCES @@ -60,8 +56,15 @@ if(WITH_JAVA) SOURCES ${JAVA_SOURCES} RESOURCES NAMESPACE "edu/wpi/first/apriltag" ${JAVA_RESOURCES} - INCLUDE_JARS wpimath_jar wpiunits_jar ${EJML_JARS} wpiutil_jar ${OPENCV_JAR_FILE} + INCLUDE_JARS + wpimath_jar + wpiunits_jar + wpiutil_jar + ${EJML_JARS} + ${OPENCV_JAR_FILE} + ${JACKSON_JARS} OUTPUT_NAME apriltag + OUTPUT_DIR ${WPILIB_BINARY_DIR}/${java_lib_dest} GENERATE_NATIVE_HEADERS apriltag_jni_headers ) set_property(TARGET apriltag_jar PROPERTY FOLDER "java") @@ -83,7 +86,6 @@ if(WITH_JAVA) endif() if(WITH_JAVA_SOURCE) - find_package(Java REQUIRED) include(UseJava) file(GLOB APRILTAG_SOURCES src/main/java/edu/wpi/first/apriltag/*.java) add_jar( @@ -94,6 +96,7 @@ if(WITH_JAVA_SOURCE) "edu/wpi/first/apriltag/jni" src/main/java/edu/wpi/first/apriltag/jni/AprilTagJNI.java OUTPUT_NAME apriltag-sources + OUTPUT_DIR ${WPILIB_BINARY_DIR}/${java_lib_dest} ) get_property(APRILTAG_SRC_JAR_FILE TARGET apriltag_src_jar PROPERTY JAR_FILE) diff --git a/cameraserver/CMakeLists.txt b/cameraserver/CMakeLists.txt index 1270c383db..2ea645470e 100644 --- a/cameraserver/CMakeLists.txt +++ b/cameraserver/CMakeLists.txt @@ -3,15 +3,11 @@ project(cameraserver) include(CompileWarnings) include(AddTest) -find_package(OpenCV REQUIRED) - # Java bindings if(WITH_JAVA) - find_package(Java REQUIRED) include(UseJava) - #find java files, copy them locally - + #find JAR file, copy it locally set(OPENCV_JAVA_INSTALL_DIR ${OpenCV_INSTALL_PATH}/share/java/opencv4) find_file( @@ -32,6 +28,7 @@ if(WITH_JAVA) ${JAVA_SOURCES} INCLUDE_JARS wpiutil_jar cscore_jar ntcore_jar ${OPENCV_JAR_FILE} OUTPUT_NAME cameraserver + OUTPUT_DIR ${WPILIB_BINARY_DIR}/${java_lib_dest} ) set_property(TARGET cameraserver_jar PROPERTY FOLDER "java") @@ -44,7 +41,6 @@ if(WITH_JAVA) endif() if(WITH_JAVA_SOURCE) - find_package(Java REQUIRED) include(UseJava) file(GLOB CAMERASERVER_SOURCES src/main/java/edu/wpi/first/cameraserver/*.java) file(GLOB VISION_SOURCES src/main/java/edu/wpi/first/vision/*.java) @@ -54,6 +50,7 @@ if(WITH_JAVA_SOURCE) NAMESPACE "edu/wpi/first/cameraserver" ${CAMERASERVER_SOURCES} NAMESPACE "edu/wpi/first/vision" ${VISION_SOURCES} OUTPUT_NAME cameraserver-sources + OUTPUT_DIR ${WPILIB_BINARY_DIR}/${java_lib_dest} ) get_property(CAMERASERVER_SRC_JAR_FILE TARGET cameraserver_src_jar PROPERTY JAR_FILE) diff --git a/cmake/modules/OptionValidation.cmake b/cmake/modules/OptionValidation.cmake new file mode 100644 index 0000000000..4460ac4415 --- /dev/null +++ b/cmake/modules/OptionValidation.cmake @@ -0,0 +1,29 @@ +function(wpilib_config) + cmake_parse_arguments(config "" "" "OPTIONS;REQUIRES" ${ARGN}) + foreach(opt ${config_OPTIONS}) + if(NOT ${opt}) + return() + endif() + endforeach() + foreach(required_opt ${config_REQUIRES}) + if(NOT ${required_opt}) + list(JOIN config_OPTIONS " and " options_list) + list(LENGTH config_OPTIONS option_len) + if(option_len GREATER 1) + set(requires require) + set(option_msg "one of the listed options") + else() + set(requires requires) + set(option_msg ${options_list}) + endif() + + message( + FATAL_ERROR + " +FATAL: ${options_list} ${requires} ${required_opt}. + Either enable ${required_opt} or disable ${option_msg}. +" + ) + endif() + endforeach() +endfunction() diff --git a/cscore/CMakeLists.txt b/cscore/CMakeLists.txt index e4f4315acc..24b605e902 100644 --- a/cscore/CMakeLists.txt +++ b/cscore/CMakeLists.txt @@ -5,8 +5,6 @@ include(CompileWarnings) include(AddTest) include(LinkMacOSGUI) -find_package(OpenCV REQUIRED) - file(GLOB cscore_native_src src/main/native/cpp/*.cpp) file(GLOB cscore_linux_src src/main/native/linux/*.cpp) file(GLOB cscore_osx_src src/main/native/osx/*.cpp) @@ -16,23 +14,21 @@ file(GLOB cscore_windows_src src/main/native/windows/*.cpp) add_library(cscore ${cscore_native_src}) set_target_properties(cscore PROPERTIES DEBUG_POSTFIX "d") -if(NOT MSVC) - if(APPLE) - target_sources(cscore PRIVATE ${cscore_osx_src} ${cscore_osx_objc_src}) - target_compile_options(cscore PRIVATE "-fobjc-arc") - set_target_properties( - cscore - PROPERTIES - LINK_FLAGS - "-framework CoreFoundation -framework AVFoundation -framework Foundation -framework CoreMedia -framework CoreVideo" - ) - else() - target_sources(cscore PRIVATE ${cscore_linux_src}) - endif() -else() +if(APPLE) + target_sources(cscore PRIVATE ${cscore_osx_src} ${cscore_osx_objc_src}) + target_compile_options(cscore PRIVATE "-fobjc-arc") + set_target_properties( + cscore + PROPERTIES + LINK_FLAGS + "-framework CoreFoundation -framework AVFoundation -framework Foundation -framework CoreMedia -framework CoreVideo" + ) +elseif(MSVC) target_sources(cscore PRIVATE ${cscore_windows_src}) target_compile_definitions(cscore PUBLIC -DNOMINMAX) target_compile_definitions(cscore PRIVATE -D_CRT_SECURE_NO_WARNINGS) +else() + target_sources(cscore PRIVATE ${cscore_linux_src}) endif() target_include_directories( @@ -81,12 +77,9 @@ endforeach() # Java bindings if(WITH_JAVA) - find_package(Java REQUIRED) - find_package(JNI REQUIRED) include(UseJava) - #find java files, copy them locally - + #find JAR file, copy it locally if("${OPENCV_JAVA_INSTALL_DIR}" STREQUAL "") set(OPENCV_JAVA_INSTALL_DIR ${OpenCV_INSTALL_PATH}/share/java/opencv4) endif() @@ -101,24 +94,6 @@ if(WITH_JAVA) ${OpenCV_INSTALL_PATH}/share/OpenCV/java NO_DEFAULT_PATH ) - find_file( - OPENCV_JNI_FILE - NAMES - libopencv_java${OpenCV_VERSION_MAJOR}${OpenCV_VERSION_MINOR}${OpenCV_VERSION_PATCH}.so - libopencv_java${OpenCV_VERSION_MAJOR}${OpenCV_VERSION_MINOR}${OpenCV_VERSION_PATCH}.dylib - opencv_java${OpenCV_VERSION_MAJOR}${OpenCV_VERSION_MINOR}${OpenCV_VERSION_PATCH}.dll - PATHS - ${OPENCV_JAVA_INSTALL_DIR} - ${OpenCV_INSTALL_PATH}/bin - ${OpenCV_INSTALL_PATH}/bin/Release - ${OpenCV_INSTALL_PATH}/bin/Debug - ${OpenCV_INSTALL_PATH}/lib - ${OpenCV_INSTALL_PATH}/lib/Release - ${OpenCV_INSTALL_PATH}/lib/Debug - ${OpenCV_INSTALL_PATH}/lib/jni - ${OpenCV_INSTALL_PATH}/share/java/opencv4 - NO_DEFAULT_PATH - ) file(GLOB cscore_jni_src src/main/native/cpp/jni/CameraServerJNI.cpp) @@ -130,6 +105,7 @@ if(WITH_JAVA) ${JAVA_SOURCES} INCLUDE_JARS wpiutil_jar ${OPENCV_JAR_FILE} OUTPUT_NAME cscore + OUTPUT_DIR ${WPILIB_BINARY_DIR}/${java_lib_dest} GENERATE_NATIVE_HEADERS cscore_jni_headers ) set_property(TARGET cscore_jar PROPERTY FOLDER "java") @@ -138,27 +114,6 @@ if(WITH_JAVA) install_jar_exports(TARGETS cscore_jar FILE cscore_jar.cmake DESTINATION share/cscore) install(FILES ${OPENCV_JAR_FILE} DESTINATION "${java_lib_dest}") - if(MSVC) - install(FILES ${OPENCV_JNI_FILE} DESTINATION "${jni_lib_dest}") - - foreach(cvFile ${OpenCV_LIBS}) - find_file( - ${cvFile}Loc - NAMES - ${cvFile}${OpenCV_VERSION_MAJOR}${OpenCV_VERSION_MINOR}${OpenCV_VERSION_PATCH}.dll - ${cvFile}${OpenCV_VERSION_MAJOR}${OpenCV_VERSION_MINOR}${OpenCV_VERSION_PATCH}d.dll - PATHS - ${OPENCV_JAVA_INSTALL_DIR} - ${OpenCV_INSTALL_PATH}/bin - ${OpenCV_INSTALL_PATH}/bin/Release - ${OpenCV_INSTALL_PATH}/bin/Debug - ${OpenCV_INSTALL_PATH}/lib - NO_DEFAULT_PATH - ) - install(FILES ${${cvFile}Loc} DESTINATION "${jni_lib_dest}") - endforeach() - endif() - add_library(cscorejni ${cscore_jni_src}) wpilib_target_warnings(cscorejni) target_link_libraries(cscorejni PUBLIC cscore wpiutil ${OpenCV_LIBS}) @@ -173,7 +128,6 @@ if(WITH_JAVA) endif() if(WITH_JAVA_SOURCE) - find_package(Java REQUIRED) include(UseJava) file(GLOB CSCORE_SOURCES src/main/java/edu/wpi/first/cscore/*.java) file(GLOB CSCORE_RAW_SOURCES src/main/java/edu/wpi/first/cscore/raw/*.java) @@ -183,6 +137,7 @@ if(WITH_JAVA_SOURCE) NAMESPACE "edu/wpi/first/cscore" ${CSCORE_SOURCES} NAMESPACE "edu/wpi/first/cscore/raw" ${CSCORE_RAW_SOURCES} OUTPUT_NAME cscore-sources + OUTPUT_DIR ${WPILIB_BINARY_DIR}/${java_lib_dest} ) get_property(CSCORE_SRC_JAR_FILE TARGET cscore_src_jar PROPERTY JAR_FILE) diff --git a/fieldImages/CMakeLists.txt b/fieldImages/CMakeLists.txt index d5607c99e1..315615b106 100644 --- a/fieldImages/CMakeLists.txt +++ b/fieldImages/CMakeLists.txt @@ -4,11 +4,9 @@ include(CompileWarnings) include(GenResources) if(WITH_JAVA) - find_package(Java REQUIRED) include(UseJava) file(GLOB JACKSON_JARS "${WPILIB_BINARY_DIR}/wpiutil/thirdparty/jackson/*.jar") - set(CMAKE_JAVA_INCLUDE_PATH fieldImages.jar ${JACKSON_JARS}) file(GLOB_RECURSE JAVA_SOURCES src/main/java/*.java) file( @@ -23,13 +21,12 @@ if(WITH_JAVA) SOURCES ${JAVA_SOURCES} RESOURCES NAMESPACE "edu/wpi/first/fields" ${JAVA_RESOURCES} + INCLUDE_JARS ${JACKSON_JARS} + OUTPUT_DIR ${WPILIB_BINARY_DIR}/${java_lib_dest} OUTPUT_NAME fieldImages ) - - get_property(FIELD_IMAGES_JAR_FILE TARGET field_images_jar PROPERTY JAR_FILE) - install(FILES ${FIELD_IMAGES_JAR_FILE} DESTINATION "${java_lib_dest}") - set_property(TARGET field_images_jar PROPERTY FOLDER "java") + install_jar(field_images_jar DESTINATION ${java_lib_dest}) endif() generate_resources( diff --git a/hal/CMakeLists.txt b/hal/CMakeLists.txt index 7070859ce1..31f640cec8 100644 --- a/hal/CMakeLists.txt +++ b/hal/CMakeLists.txt @@ -43,8 +43,6 @@ install(EXPORT hal DESTINATION share/hal) # Java bindings if(WITH_JAVA) - find_package(Java REQUIRED) - find_package(JNI REQUIRED) include(UseJava) file(GLOB_RECURSE hal_shared_jni_src src/main/native/cpp/jni/*.cpp) @@ -57,6 +55,7 @@ if(WITH_JAVA) ${JAVA_SOURCES} INCLUDE_JARS wpiutil_jar OUTPUT_NAME wpiHal + OUTPUT_DIR ${WPILIB_BINARY_DIR}/${java_lib_dest} GENERATE_NATIVE_HEADERS hal_jni_headers ) set_property(TARGET hal_jar PROPERTY FOLDER "java") @@ -80,7 +79,6 @@ if(WITH_JAVA) endif() if(WITH_JAVA_SOURCE) - find_package(Java REQUIRED) include(UseJava) file(GLOB HAL_SOURCES src/main/java/edu/wpi/first/hal/*.java src/generated/main/java/*.java) file(GLOB HAL_CAN_SOURCES src/main/java/edu/wpi/first/hal/can/*.java) @@ -97,6 +95,7 @@ if(WITH_JAVA_SOURCE) NAMESPACE "edu/wpi/first/hal/simulation" ${HAL_SIMULATION_SOURCES} NAMESPACE "edu/wpi/first/hal/util" ${HAL_UTIL_SOURCES} OUTPUT_NAME wpiHal-sources + OUTPUT_DIR ${WPILIB_BINARY_DIR}/${java_lib_dest} ) get_property(HAL_SRC_JAR_FILE TARGET hal_src_jar PROPERTY JAR_FILE) diff --git a/imgui/CMakeLists.txt b/imgui/CMakeLists.txt index b4810e9ce0..04a6a3aeb9 100644 --- a/imgui/CMakeLists.txt +++ b/imgui/CMakeLists.txt @@ -1,4 +1,5 @@ include(FetchContent) +include(LinkMacOSGUI) fetchcontent_declare( glfw3 @@ -82,14 +83,12 @@ endif() target_compile_definitions(imgui PUBLIC IMGUI_IMPL_OPENGL_LOADER_GL3W) if(MSVC) target_sources(imgui PRIVATE ${imgui_SOURCE_DIR}/backends/imgui_impl_dx11.cpp) +elseif(APPLE) + target_compile_options(imgui PRIVATE -fobjc-arc) + wpilib_link_macos_gui(imgui) + target_sources(imgui PRIVATE ${imgui_SOURCE_DIR}/backends/imgui_impl_metal.mm) else() - if(APPLE) - target_compile_options(imgui PRIVATE -fobjc-arc) - set_target_properties(imgui PROPERTIES LINK_FLAGS "-framework Metal -framework QuartzCore") - target_sources(imgui PRIVATE ${imgui_SOURCE_DIR}/backends/imgui_impl_metal.mm) - else() - #target_sources(imgui PRIVATE ${imgui_SOURCE_DIR}/backends/imgui_impl_opengl3.cpp) - endif() + #target_sources(imgui PRIVATE ${imgui_SOURCE_DIR}/backends/imgui_impl_opengl3.cpp) endif() target_link_libraries(imgui PUBLIC glfw) target_include_directories( diff --git a/ntcore/CMakeLists.txt b/ntcore/CMakeLists.txt index bbf3790a7b..101307886d 100644 --- a/ntcore/CMakeLists.txt +++ b/ntcore/CMakeLists.txt @@ -39,14 +39,10 @@ install(EXPORT ntcore DESTINATION share/ntcore) # Java bindings if(WITH_JAVA) - find_package(Java REQUIRED) - find_package(JNI REQUIRED) include(UseJava) file(GLOB QUICKBUF_JAR ${WPILIB_BINARY_DIR}/wpiutil/thirdparty/quickbuf/*.jar) - set(CMAKE_JAVA_INCLUDE_PATH wpimath.jar ${QUICKBUF_JAR}) - file(GLOB ntcore_jni_src src/main/native/cpp/jni/*.cpp src/generated/main/native/cpp/jni/*.cpp) file(GLOB_RECURSE JAVA_SOURCES src/main/java/*.java src/generated/main/java/*.java) @@ -55,8 +51,9 @@ if(WITH_JAVA) add_jar( ntcore_jar ${JAVA_SOURCES} - INCLUDE_JARS wpiutil_jar + INCLUDE_JARS wpiutil_jar ${QUICKBUF_JAR} OUTPUT_NAME ntcore + OUTPUT_DIR ${WPILIB_BINARY_DIR}/${java_lib_dest} GENERATE_NATIVE_HEADERS ntcore_jni_headers ) set_property(TARGET ntcore_jar PROPERTY FOLDER "java") @@ -70,10 +67,6 @@ if(WITH_JAVA) set_property(TARGET ntcorejni PROPERTY FOLDER "libraries") - if(MSVC) - install(TARGETS ntcorejni RUNTIME DESTINATION "${jni_lib_dest}" COMPONENT Runtime) - endif() - target_link_libraries(ntcorejni PRIVATE ntcore_jni_headers) add_dependencies(ntcorejni ntcore_jar) @@ -82,7 +75,6 @@ if(WITH_JAVA) endif() if(WITH_JAVA_SOURCE) - find_package(Java REQUIRED) include(UseJava) file( GLOB NTCORE_SOURCES @@ -94,6 +86,7 @@ if(WITH_JAVA_SOURCE) RESOURCES NAMESPACE "edu/wpi/first/networktables" ${NTCORE_SOURCES} OUTPUT_NAME ntcore-sources + OUTPUT_DIR ${WPILIB_BINARY_DIR}/${java_lib_dest} ) get_property(NTCORE_SRC_JAR_FILE TARGET ntcore_src_jar PROPERTY JAR_FILE) diff --git a/romiVendordep/CMakeLists.txt b/romiVendordep/CMakeLists.txt index 960e7d112e..cae0707608 100644 --- a/romiVendordep/CMakeLists.txt +++ b/romiVendordep/CMakeLists.txt @@ -5,7 +5,6 @@ include(CompileWarnings) include(AddTest) if(WITH_JAVA) - find_package(Java REQUIRED) include(UseJava) file(GLOB_RECURSE JAVA_SOURCES src/main/java/*.java) @@ -22,6 +21,7 @@ if(WITH_JAVA) wpiutil_jar wpilibj_jar OUTPUT_NAME romiVendordep + OUTPUT_DIR ${WPILIB_BINARY_DIR}/${java_lib_dest} ) set_property(TARGET romiVendordep_jar PROPERTY FOLDER "java") @@ -34,7 +34,6 @@ if(WITH_JAVA) endif() if(WITH_JAVA_SOURCE) - find_package(Java REQUIRED) include(UseJava) file(GLOB_RECURSE ROMIVENDORDEP_SOURCES src/main/java/*.java) add_jar( @@ -42,6 +41,7 @@ if(WITH_JAVA_SOURCE) RESOURCES NAMESPACE "edu/wpi/first/wpilibj/romi" ${ROMIVENDORDEP_SOURCES} OUTPUT_NAME romiVendordep-sources + OUTPUT_DIR ${WPILIB_BINARY_DIR}/${java_lib_dest} ) get_property(ROMIVENDORDEP_SRC_JAR_FILE TARGET romiVendordep_src_jar PROPERTY JAR_FILE) @@ -66,7 +66,7 @@ target_include_directories( $ ) -install(TARGETS romiVendordep EXPORT romivendordep DESTINATION "${main_lib_dest}") +install(TARGETS romiVendordep EXPORT romivendordep) export(TARGETS romiVendordep FILE romivendordep.cmake NAMESPACE romivendordep::) install(DIRECTORY src/main/native/include/ DESTINATION "${include_dest}/romiVendordep") diff --git a/simulation/halsim_xrp/CMakeLists.txt b/simulation/halsim_xrp/CMakeLists.txt index f961f3b94d..71f8c53ecf 100644 --- a/simulation/halsim_xrp/CMakeLists.txt +++ b/simulation/halsim_xrp/CMakeLists.txt @@ -13,5 +13,5 @@ target_include_directories(halsim_xrp PRIVATE src/main/native/include) set_property(TARGET halsim_xrp PROPERTY FOLDER "libraries") -install(TARGETS halsim_xrp EXPORT halsim_xrp DESTINATION "${main_lib_dest}") +install(TARGETS halsim_xrp EXPORT halsim_xrp) export(TARGETS halsim_xrp FILE halsim_xrp.cmake NAMESPACE halsim_xrp::) diff --git a/wpigui/CMakeLists.txt b/wpigui/CMakeLists.txt index 221977728f..04ffe3b2dc 100644 --- a/wpigui/CMakeLists.txt +++ b/wpigui/CMakeLists.txt @@ -30,14 +30,12 @@ target_include_directories( if(MSVC) target_sources(wpigui PRIVATE ${wpigui_windows_src}) +elseif(APPLE) + target_compile_options(wpigui PRIVATE -fobjc-arc) + wpilib_link_macos_gui(wpigui) + target_sources(wpigui PRIVATE ${wpigui_mac_src}) else() - if(APPLE) - target_compile_options(wpigui PRIVATE -fobjc-arc) - set_target_properties(wpigui PROPERTIES LINK_FLAGS "-framework Metal -framework QuartzCore") - target_sources(wpigui PRIVATE ${wpigui_mac_src}) - else() - target_sources(wpigui PRIVATE ${wpigui_unix_src}) - endif() + target_sources(wpigui PRIVATE ${wpigui_unix_src}) endif() add_executable(wpiguidev src/dev/native/cpp/main.cpp) diff --git a/wpilibNewCommands/CMakeLists.txt b/wpilibNewCommands/CMakeLists.txt index 18495fbd99..43292dfbe4 100644 --- a/wpilibNewCommands/CMakeLists.txt +++ b/wpilibNewCommands/CMakeLists.txt @@ -5,7 +5,6 @@ include(CompileWarnings) include(AddTest) if(WITH_JAVA) - find_package(Java REQUIRED) include(UseJava) file(GLOB_RECURSE JAVA_SOURCES src/main/java/*.java src/generated/main/java/*.java) @@ -24,6 +23,7 @@ if(WITH_JAVA) wpiutil_jar wpilibj_jar OUTPUT_NAME wpilibNewCommands + OUTPUT_DIR ${WPILIB_BINARY_DIR}/${java_lib_dest} ) set_property(TARGET wpilibNewCommands_jar PROPERTY FOLDER "java") @@ -36,7 +36,6 @@ if(WITH_JAVA) endif() if(WITH_JAVA_SOURCE) - find_package(Java REQUIRED) include(UseJava) file(GLOB WPILIBNEWCOMMANDS_SOURCES src/main/java/edu/wpi/first/wpilibj2/command/*.java) file( @@ -50,6 +49,7 @@ if(WITH_JAVA_SOURCE) NAMESPACE "edu/wpi/first/wpilibj2/command" ${WPILIBNEWCOMMANDS_SOURCES} NAMESPACE "edu/wpi/first/wpilibj2/command/button" ${WPILIBNEWCOMMANDS_BUTTON_SOURCES} OUTPUT_NAME wpilibNewCommands-sources + OUTPUT_DIR ${WPILIB_BINARY_DIR}/${java_lib_dest} ) get_property(WPILIBNEWCOMMANDS_SRC_JAR_FILE TARGET wpilibNewCommands_src_jar PROPERTY JAR_FILE) @@ -82,6 +82,10 @@ target_include_directories( install(TARGETS wpilibNewCommands EXPORT wpilibnewcommands) export(TARGETS wpilibNewCommands FILE wpilibnewcommands.cmake NAMESPACE wpilibnewcommands::) install(DIRECTORY src/main/native/include/ DESTINATION "${include_dest}/wpilibNewCommands") +install( + DIRECTORY src/generated/main/native/include/ + DESTINATION "${include_dest}/wpilibNewCommands" +) configure_file( wpilibnewcommands-config.cmake.in diff --git a/wpilibc/CMakeLists.txt b/wpilibc/CMakeLists.txt index 186c9794b1..7046509e7a 100644 --- a/wpilibc/CMakeLists.txt +++ b/wpilibc/CMakeLists.txt @@ -25,7 +25,6 @@ target_include_directories( wpilib_target_warnings(wpilibc) if(WITH_CSCORE) - find_package(OpenCV) target_link_libraries(wpilibc PUBLIC cameraserver cscore ${OpenCV_LIBS}) else() target_compile_definitions(wpilibc PRIVATE DYNAMIC_CAMERA_SERVER) @@ -43,6 +42,7 @@ set_property(TARGET wpilibc PROPERTY FOLDER "libraries") install(TARGETS wpilibc EXPORT wpilibc) export(TARGETS wpilibc FILE wpilibc.cmake NAMESPACE wpilibc::) install(DIRECTORY src/main/native/include/ DESTINATION "${include_dest}/wpilibc") +install(DIRECTORY src/generated/main/native/include/ DESTINATION "${include_dest}/wpilibc") configure_file(wpilibc-config.cmake.in ${WPILIB_BINARY_DIR}/wpilibc-config.cmake) install(FILES ${WPILIB_BINARY_DIR}/wpilibc-config.cmake DESTINATION share/wpilibc) diff --git a/wpilibj/CMakeLists.txt b/wpilibj/CMakeLists.txt index e2a8fb331a..6124368075 100644 --- a/wpilibj/CMakeLists.txt +++ b/wpilibj/CMakeLists.txt @@ -2,8 +2,6 @@ project(wpilibj) # Java bindings if(WITH_JAVA) - find_package(OpenCV REQUIRED) - find_package(Java REQUIRED) include(UseJava) set(OPENCV_JAVA_INSTALL_DIR ${OpenCV_INSTALL_PATH}/share/java/opencv4) @@ -41,6 +39,7 @@ if(WITH_JAVA) wpiunits_jar wpiutil_jar OUTPUT_NAME wpilibj + OUTPUT_DIR ${WPILIB_BINARY_DIR}/${java_lib_dest} ) set_property(TARGET wpilibj_jar PROPERTY FOLDER "java") @@ -51,7 +50,6 @@ if(WITH_JAVA) endif() if(WITH_JAVA_SOURCE) - find_package(Java REQUIRED) include(UseJava) file( GLOB WPILIBJ_SOURCES @@ -95,6 +93,7 @@ if(WITH_JAVA_SOURCE) NAMESPACE "edu/wpi/first/wpilibj/smartdashboard" ${WPILIBJ_SMARTDASHBOARD_SOURCES} NAMESPACE "edu/wpi/first/wpilibj/util" ${WPILIBJ_UTIL_SOURCES} OUTPUT_NAME wpilibj-sources + OUTPUT_DIR ${WPILIB_BINARY_DIR}/${java_lib_dest} ) get_property(WPILIBJ_SRC_JAR_FILE TARGET wpilibj_src_jar PROPERTY JAR_FILE) diff --git a/wpimath/CMakeLists.txt b/wpimath/CMakeLists.txt index f56558410a..80ed18d40c 100644 --- a/wpimath/CMakeLists.txt +++ b/wpimath/CMakeLists.txt @@ -31,8 +31,6 @@ file( # Java bindings if(WITH_JAVA) - find_package(Java REQUIRED) - find_package(JNI REQUIRED) include(UseJava) if(NOT EXISTS "${WPILIB_BINARY_DIR}/wpimath/thirdparty/ejml/ejml-simple-0.43.1.jar") @@ -77,8 +75,6 @@ if(WITH_JAVA) file(GLOB JACKSON_JARS "${WPILIB_BINARY_DIR}/wpiutil/thirdparty/jackson/*.jar") file(GLOB QUICKBUF_JAR ${WPILIB_BINARY_DIR}/wpiutil/thirdparty/quickbuf/*.jar) - set(CMAKE_JAVA_INCLUDE_PATH wpimath.jar ${EJML_JARS} ${JACKSON_JARS} ${QUICKBUF_JAR}) - set(CMAKE_JNI_TARGET true) file(GLOB_RECURSE JAVA_SOURCES src/main/java/*.java src/generated/main/java/*.java) @@ -86,8 +82,9 @@ if(WITH_JAVA) add_jar( wpimath_jar ${JAVA_SOURCES} - INCLUDE_JARS ${EJML_JARS} wpiutil_jar wpiunits_jar + INCLUDE_JARS wpiutil_jar wpiunits_jar ${EJML_JARS} ${JACKSON_JARS} ${QUICKBUF_JAR} OUTPUT_NAME wpimath + OUTPUT_DIR ${WPILIB_BINARY_DIR}/${java_lib_dest} GENERATE_NATIVE_HEADERS wpimath_jni_headers ) set_property(TARGET wpimath_jar PROPERTY FOLDER "java") @@ -109,7 +106,6 @@ if(WITH_JAVA) endif() if(WITH_JAVA_SOURCE) - find_package(Java REQUIRED) include(UseJava) file( GLOB WPIMATH_SOURCES @@ -150,6 +146,7 @@ if(WITH_JAVA_SOURCE) ${WPIMATH_TRAJECTORY_CONSTRAINT_SOURCES} NAMESPACE "edu/wpi/first/math/util" src/main/java/edu/wpi/first/math/util/Units.java OUTPUT_NAME wpimath-sources + OUTPUT_DIR ${WPILIB_BINARY_DIR}/${java_lib_dest} ) get_property(WPIMATH_SRC_JAR_FILE TARGET wpimath_src_jar PROPERTY JAR_FILE) diff --git a/wpinet/CMakeLists.txt b/wpinet/CMakeLists.txt index 7e189a87ab..bddb4db83a 100644 --- a/wpinet/CMakeLists.txt +++ b/wpinet/CMakeLists.txt @@ -9,8 +9,6 @@ file(GLOB wpinet_jni_src src/main/native/cpp/jni/WPINetJNI.cpp) # Java bindings if(WITH_JAVA) - find_package(Java REQUIRED) - find_package(JNI REQUIRED) include(UseJava) set(CMAKE_JNI_TARGET true) @@ -22,6 +20,7 @@ if(WITH_JAVA) ${JAVA_SOURCES} INCLUDE_JARS wpiutil_jar OUTPUT_NAME wpinet + OUTPUT_DIR ${WPILIB_BINARY_DIR}/${java_lib_dest} GENERATE_NATIVE_HEADERS wpinet_jni_headers ) set_property(TARGET wpinet_jar PROPERTY FOLDER "java") @@ -43,7 +42,6 @@ if(WITH_JAVA) endif() if(WITH_JAVA_SOURCE) - find_package(Java REQUIRED) include(UseJava) file(GLOB WPINET_SOURCES src/main/java/edu/wpi/first/net/*.java) add_jar( @@ -51,6 +49,7 @@ if(WITH_JAVA_SOURCE) RESOURCES NAMESPACE "edu/wpi/first/net" ${WPINET_SOURCES} OUTPUT_NAME wpinet-sources + OUTPUT_DIR ${WPILIB_BINARY_DIR}/${java_lib_dest} ) get_property(WPINET_SRC_JAR_FILE TARGET wpinet_src_jar PROPERTY JAR_FILE) @@ -145,7 +144,6 @@ if(NOT USE_SYSTEM_LIBUV) wpinet PUBLIC $ - $ ) if(NOT MSVC) target_sources(wpinet PRIVATE ${uv_unix_src}) @@ -185,7 +183,6 @@ target_include_directories( wpinet PUBLIC $ - $ ) install(DIRECTORY src/main/native/include/ DESTINATION "${include_dest}/wpinet") diff --git a/wpiunits/CMakeLists.txt b/wpiunits/CMakeLists.txt index 4f71da1b15..3cba94bfd6 100644 --- a/wpiunits/CMakeLists.txt +++ b/wpiunits/CMakeLists.txt @@ -2,12 +2,16 @@ project(wpiunits) # Java bindings if(WITH_JAVA) - find_package(Java REQUIRED) include(UseJava) file(GLOB_RECURSE JAVA_SOURCES src/main/java/*.java) - add_jar(wpiunits_jar ${JAVA_SOURCES} OUTPUT_NAME wpiunits) + add_jar( + wpiunits_jar + ${JAVA_SOURCES} + OUTPUT_NAME wpiunits + OUTPUT_DIR ${WPILIB_BINARY_DIR}/${java_lib_dest} + ) set_property(TARGET wpiunits_jar PROPERTY FOLDER "java") install_jar(wpiunits_jar DESTINATION ${java_lib_dest}) diff --git a/wpiutil/CMakeLists.txt b/wpiutil/CMakeLists.txt index eb4a0a8f7c..e20754db21 100644 --- a/wpiutil/CMakeLists.txt +++ b/wpiutil/CMakeLists.txt @@ -14,8 +14,6 @@ file( # Java bindings if(WITH_JAVA) - find_package(Java REQUIRED) - find_package(JNI REQUIRED) include(UseJava) if(NOT EXISTS "${WPILIB_BINARY_DIR}/wpiutil/thirdparty/jackson/jackson-core-2.15.2.jar") @@ -47,10 +45,9 @@ if(WITH_JAVA) set(JAR_ROOT "${WPILIB_BINARY_DIR}/wpiutil/thirdparty/quickbuf") message(STATUS "Downloading Quickbuf jarfile...") - file( - DOWNLOAD - "${BASE_URL}us/hebi/quickbuf/quickbuf-runtime/1.3.3/quickbuf-runtime-1.3.3.jar" - "${JAR_ROOT}/quickbuf-runtime-1.3.3.jar" + download_and_check( + "${BASE_URL}us/hebi/quickbuf/quickbuf-runtime/1.3.3/quickbuf-runtime-1.3.3.jar" + "${JAR_ROOT}/quickbuf-runtime-1.3.3.jar" ) message(STATUS "Downloaded.") @@ -58,8 +55,6 @@ if(WITH_JAVA) file(GLOB QUICKBUF_JAR ${WPILIB_BINARY_DIR}/wpiutil/thirdparty/quickbuf/*.jar) - set(CMAKE_JAVA_INCLUDE_PATH wpiutil.jar ${JACKSON_JARS} ${QUICKBUF_JAR}) - set(CMAKE_JNI_TARGET true) file(GLOB_RECURSE JAVA_SOURCES src/main/java/*.java) @@ -69,6 +64,7 @@ if(WITH_JAVA) ${JAVA_SOURCES} INCLUDE_JARS ${JACKSON_JARS} ${QUICKBUF_JAR} OUTPUT_NAME wpiutil + OUTPUT_DIR ${WPILIB_BINARY_DIR}/${java_lib_dest} GENERATE_NATIVE_HEADERS wpiutil_jni_headers ) set_property(TARGET wpiutil_jar PROPERTY FOLDER "java") @@ -90,7 +86,6 @@ if(WITH_JAVA) endif() if(WITH_JAVA_SOURCE) - find_package(Java REQUIRED) include(UseJava) file(GLOB WPIUTIL_SOURCES src/main/java/edu/wpi/first/util/*.java) file(GLOB WPIUTIL_CLEANUP_SOURCES src/main/java/edu/wpi/first/util/cleanup/*.java) @@ -108,6 +103,7 @@ if(WITH_JAVA_SOURCE) NAMESPACE "edu/wpi/first/util/function" ${WPIUTIL_FUNCTION_SOURCES} NAMESPACE "edu/wpi/first/util/sendable" ${WPIUTIL_SENDABLE_SOURCES} OUTPUT_NAME wpiutil-sources + OUTPUT_DIR ${WPILIB_BINARY_DIR}/${java_lib_dest} ) get_property(WPIUTIL_SRC_JAR_FILE TARGET wpiutil_src_jar PROPERTY JAR_FILE) @@ -176,7 +172,6 @@ if(NOT USE_SYSTEM_FMTLIB) wpiutil PUBLIC $ - $ ) else() find_package(fmt CONFIG REQUIRED) @@ -208,49 +203,36 @@ install( target_include_directories( wpiutil PUBLIC - $ $ - $ ) install(DIRECTORY src/main/native/thirdparty/memory/include/ DESTINATION "${include_dest}/wpiutil") target_include_directories( wpiutil - PUBLIC - $ - $ - $ + PUBLIC $ ) install(DIRECTORY src/main/native/thirdparty/json/include/ DESTINATION "${include_dest}/wpiutil") target_include_directories( wpiutil - PUBLIC - $ - $ + PUBLIC $ ) install(DIRECTORY src/main/native/thirdparty/llvm/include/ DESTINATION "${include_dest}/wpiutil") target_include_directories( wpiutil - PUBLIC - $ - $ + PUBLIC $ ) install(DIRECTORY src/main/native/thirdparty/mpack/include/ DESTINATION "${include_dest}/wpiutil") target_include_directories( wpiutil - PUBLIC - $ - $ + PUBLIC $ ) install(DIRECTORY src/main/native/thirdparty/sigslot/include/ DESTINATION "${include_dest}/wpiutil") target_include_directories( wpiutil - PUBLIC - $ - $ + PUBLIC $ ) install(DIRECTORY src/main/native/include/ DESTINATION "${include_dest}/wpiutil") diff --git a/xrpVendordep/CMakeLists.txt b/xrpVendordep/CMakeLists.txt index 5099beb760..e57c703417 100644 --- a/xrpVendordep/CMakeLists.txt +++ b/xrpVendordep/CMakeLists.txt @@ -5,7 +5,6 @@ include(CompileWarnings) include(AddTest) if(WITH_JAVA) - find_package(Java REQUIRED) include(UseJava) file(GLOB_RECURSE JAVA_SOURCES src/main/java/*.java) @@ -22,6 +21,7 @@ if(WITH_JAVA) wpiutil_jar wpilibj_jar OUTPUT_NAME xrpVendordep + OUTPUT_DIR ${WPILIB_BINARY_DIR}/${java_lib_dest} ) set_property(TARGET xrpVendordep_jar PROPERTY FOLDER "java") @@ -34,7 +34,6 @@ if(WITH_JAVA) endif() if(WITH_JAVA_SOURCE) - find_package(Java REQUIRED) include(UseJava) file(GLOB XRPVENDORDEP_SOURCES src/main/java/edu/wpi/first/wpilibj/xrp/*.java) add_jar( @@ -42,6 +41,7 @@ if(WITH_JAVA_SOURCE) RESOURCES NAMESPACE "edu/wpi/first/wpilibj/xrp" ${XRPVENDORDEP_SOURCES} OUTPUT_NAME xrpVendordep-sources + OUTPUT_DIR ${WPILIB_BINARY_DIR}/${java_lib_dest} ) get_property(xrpVendordep_src_JAR_FILE TARGET xrpVendordep_src_jar PROPERTY JAR_FILE) @@ -66,7 +66,7 @@ target_include_directories( $ ) -install(TARGETS xrpVendordep EXPORT xrpvendordep DESTINATION "${main_lib_dest}") +install(TARGETS xrpVendordep EXPORT xrpvendordep) export(TARGETS xrpVendordep FILE xrpvendordep.cmake NAMESPACE xrpvendordep::) install(DIRECTORY src/main/native/include/ DESTINATION "${include_dest}/xrpVendordep")