View Issue Details Jump to Notes ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0014655CMakeCMakepublic2013-12-18 15:132015-11-02 09:13
ReporterSteve Wolak 
Assigned To 
PrioritynormalSeverityminorReproducibilityalways
StatusclosedResolutionfixed 
Platformx64OSWindowsOS Version7
Product VersionCMake 2.8.12 
Target VersionCMake 3.3Fixed in VersionCMake 3.3 
Summary0014655: Setting CMAKE_JAVA_TARGET_OUTPUT_DIR does not set the output for NMake type generator
DescriptionSetting CMAKE_JAVA_TARGET_OUTPUT_DIR to the desired output path seems to have no affect when using NMake as the generator.
Steps To Reproduceinclude(UseJava)
    
set(CMAKE_JAVA_TARGET_OUTPUT_DIR <insert your preferred dir here>)
add_jar(<add your sources>)

The jar will continue to be placed into the current binary directory.

According to documentation:

"The default OUTPUT_DIR can also be changed by setting the variable CMAKE_JAVA_TARGET_OUTPUT_DIR."
Additional InformationThis appears to be happening because of the use of cmake_parse_arguments in UseJava.cmake. _add_jar_OUTPUT_DIR is setup correctly with CMAKE_JAVA_TARGET_OUTPUT_DIR until that is called. As there is a work around for this (using OUTPUT_DIR in the add_jar command), I logged it as minor.
TagsNo tags attached.
Attached Files

 Relationships

  Notes
(0034808)
Brad King (manager)
2013-12-18 15:57

For reference, use of cmake_parse_arguments was added here:

 UseJava.cmake: require explicit request to include jars
 http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8a2fca8c [^]

and released first in CMake 2.8.11.
(0038259)
Mark Studenka (reporter)
2015-03-19 10:55

Here's a patch that fixes this issue for me. It should also fix the other global java variables (CMAKE_JAVA_TARGET_VERSION, CMAKE_JAVA_TARGET_OUTPUT_NAME, CMAKE_JAVA_JAR_ENTRY_POINT)

---
 Modules/UseJava.cmake | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/Modules/UseJava.cmake b/Modules/UseJava.cmake
index 3a6acd8..5eb0ca8 100644
--- a/Modules/UseJava.cmake
+++ b/Modules/UseJava.cmake
@@ -340,6 +340,13 @@ set(_JAVA_SYMLINK_SCRIPT ${CMAKE_CURRENT_LIST_DIR}/UseJavaSymlinks.cmake)
 
 function(add_jar _TARGET_NAME)
 
+ cmake_parse_arguments(_add_jar
+ ""
+ "VERSION;OUTPUT_DIR;OUTPUT_NAME;ENTRY_POINT;MANIFEST"
+ "SOURCES;INCLUDE_JARS"
+ ${ARGN}
+ )
+
     # In CMake < 2.8.12, add_jar used variables which were set prior to calling
     # add_jar for customizing the behavior of add_jar. In order to be backwards
     # compatible, check if any of those variables are set, and use them to
@@ -347,28 +354,21 @@ function(add_jar _TARGET_NAME)
     # argument will override the value set here.)
     #
     # New features should use named arguments only.
- if(DEFINED CMAKE_JAVA_TARGET_VERSION)
+ if(NOT DEFINED _add_jar_VERSION AND DEFINED CMAKE_JAVA_TARGET_VERSION)
         set(_add_jar_VERSION "${CMAKE_JAVA_TARGET_VERSION}")
     endif()
- if(DEFINED CMAKE_JAVA_TARGET_OUTPUT_DIR)
+ if(NOT DEFINED _add_jar_OUTPUT_DIR AND DEFINED CMAKE_JAVA_TARGET_OUTPUT_DIR)
         set(_add_jar_OUTPUT_DIR "${CMAKE_JAVA_TARGET_OUTPUT_DIR}")
     endif()
- if(DEFINED CMAKE_JAVA_TARGET_OUTPUT_NAME)
+ if(NOT DEFINED _add_jar_OUTPUT_NAME AND DEFINED CMAKE_JAVA_TARGET_OUTPUT_NAME)
         set(_add_jar_OUTPUT_NAME "${CMAKE_JAVA_TARGET_OUTPUT_NAME}")
         # reset
         set(CMAKE_JAVA_TARGET_OUTPUT_NAME)
     endif()
- if(DEFINED CMAKE_JAVA_JAR_ENTRY_POINT)
+ if(NOT DEFINED _add_jar_ENTRY_POINT AND DEFINED CMAKE_JAVA_JAR_ENTRY_POINT)
         set(_add_jar_ENTRY_POINT "${CMAKE_JAVA_JAR_ENTRY_POINT}")
     endif()
 
- cmake_parse_arguments(_add_jar
- ""
- "VERSION;OUTPUT_DIR;OUTPUT_NAME;ENTRY_POINT;MANIFEST"
- "SOURCES;INCLUDE_JARS"
- ${ARGN}
- )
-
     set(_JAVA_SOURCE_FILES ${_add_jar_SOURCES} ${_add_jar_UNPARSED_ARGUMENTS})
 
     if (NOT DEFINED _add_jar_OUTPUT_DIR)
--
(0038265)
Brad King (manager)
2015-03-20 10:49

Re 0014655:0038259: Thanks! Applied:

 UseJava: Fix add_jar argument parsing
 http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a21e8df0 [^]
(0039740)
Robert Maynard (manager)
2015-11-02 09:13

Closing resolved issues that have not been updated in more than 4 months.

 Issue History
Date Modified Username Field Change
2013-12-18 15:13 Steve Wolak New Issue
2013-12-18 15:57 Brad King Note Added: 0034808
2015-03-19 10:55 Mark Studenka Note Added: 0038259
2015-03-20 10:49 Brad King Note Added: 0038265
2015-03-20 10:50 Brad King Resolution open => fixed
2015-03-20 10:50 Brad King Fixed in Version => CMake 3.3
2015-03-20 10:50 Brad King Target Version => CMake 3.3
2015-03-20 10:50 Brad King Status new => resolved
2015-11-02 09:13 Robert Maynard Note Added: 0039740
2015-11-02 09:13 Robert Maynard Status resolved => closed


Copyright © 2000 - 2018 MantisBT Team