[CMake] Overriding Win-Registry search in UseJNI.cmake

Oliver Buchtala oliver.buchtala at jku.at
Tue Apr 5 11:28:22 EDT 2011


Am 05.04.2011 17:11, schrieb Oliver Buchtala:
> Am 05.04.2011 16:33, schrieb David Cole:
>> On Tue, Apr 5, 2011 at 7:16 AM, Oliver Buchtala 
>> <oliver.buchtala at jku.at <mailto:oliver.buchtala at jku.at>> wrote:
>>
>>     Am 05.04.2011 13:12, schrieb Oliver Buchtala:
>>
>>         Hello,
>>
>>         I am working with CMake 2.8 and using UseJNI.cmake
>>         I have a JDK installed locally (registered in Win-Registry)
>>         but want to configure a project to use a different JDK lying
>>         on my disk.
>>
>>         Looking at UseJNI.cmake I find that the environment variable
>>         JAVA_HOME could be handy,
>>         but unfortunately UseJNI prefers the Windows-Registry entries
>>         above all other search paths.
>>
>>         Did I miss something?
>>         Shall I file an issue?
>>
>>         Oliver
>>
>>     Sorry, the macro file is called FindJNI.cmake.
>>
>>
>>     _______________________________________________
>>     Powered by www.kitware.com <http://www.kitware.com>
>>
>>     Visit other Kitware open-source projects at
>>     http://www.kitware.com/opensource/opensource.html
>>
>>     Please keep messages on-topic and check the CMake FAQ at:
>>     http://www.cmake.org/Wiki/CMake_FAQ
>>
>>     Follow this link to subscribe/unsubscribe:
>>     http://www.cmake.org/mailman/listinfo/cmake
>>
>>
>> The only find_* calls I see in FindJNI.cmake are:
>>
>>   FIND_LIBRARY(JAVA_AWT_LIBRARY jawt
>>   FIND_LIBRARY(JAVA_JVM_LIBRARY NAMES jvm JavaVM
>>   FIND_PATH(JAVA_INCLUDE_PATH jni.h
>>   FIND_PATH(JAVA_INCLUDE_PATH2 jni_md.h
>>   FIND_PATH(JAVA_AWT_INCLUDE_PATH jawt.h
>>
>> If you want to override the default locations to find a specific 
>> installation of java stuff, just set those variables in your cache to 
>> point to the right stuff before calling find_package(JNI).
>>
>> For example:
>>   set(JAVA_AWT_LIBRARY "/full/path/to/libjawt.a" CACHE FILEPATH "jawt 
>> library")
>>   find_package(JNI)
>>
>> If a variable is already set before calling a find_* command, then 
>> the find is a no-op and it trusts that you've set it correctly.
>>
>>
>> HTH,
>> David
>>
> Hi David,
>
> ok. I thought it could even be easier ;)
> If I disable the win-Registry lookup stuff and set JAVA_HOME 
> appropriately then everything is found perfectly.
> And if disabling would be just changing the order of search paths this 
> would be more control for me and still powerful (i.e., when not using 
> JAVA_HOME).
> Nevertheless, I can also live with your suggestion...
>
> Thank you,
> Oliver
>
Hi David,

Thinking it over again, I am getting to like it less...
Setting these variables is in fact the stuff that FindJNI does.

For now I will live with a monkey patched version that allows disabling 
the registry search stuff.
Is this an option for the core FindJNI.cmake too - i.e., introducing a 
means to disable win registry search?

Bye,
Oliver

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20110405/07c52421/attachment.htm>


More information about the CMake mailing list