[CMake] TRY_COMPILE painful for tool testing
Brandon J. Van Every
bvanevery at gmail.com
Wed Sep 20 14:24:50 EDT 2006
Brandon J. Van Every wrote:
> William A. Hoffman wrote:
>> At 08:17 AM 7/22/2006, Brad King wrote:
>>
>>> Brandon J. Van Every wrote:
>>>
>>>> Ok, the CMake 2.4.2 documentation for the projectName version of TRY_COMPILE is only 3 short sentences. IIUYC, you are saying I'm going to have to write a CMakeLists.txt wrapper, and a subdirectory, for each and every tool like "makeinfo," if I want to prove that they work in the build.
>>>>
>>> You can create a macro to wrap this all up. The source tree for the TRY_COMPILE can be created with FILE(WRITE) and FILE(MAKE_DIRECTORY).
>>>
>> Regardless of the documentation, try-compile and not exec_process is what is supposed
>> to be used for system introspection. The build time environment is often different
>> than the cmake time environment, and if you are testing programs that will be run
>> at build time, try-compile/try_run is the only way to do that. I assume that you are
>> planning to run makeinfo at build time, so it should be tested at build time. Remember
>> cmake is not a build tool, but rather a build generator, and is not running during
>> the build.
>>
>
> Ok, but given the shenanigans that must occur just to test if a tool
> works, the wrapped up functionality really should make it into CMake.
> I just can't abide that a user should have to do this much stuff to
> test a tool. I will write a macro and put it on the wiki. What is
> the process for getting user contributed macros into the Standard
> CMake Modules? That would be good information to have on the wiki, on
> this page: http://www.cmake.org/Wiki/CMake_User_Contributed_Macros
>
I am finding it nearly impossible to write such a macro in practice.
The problem is that a custom COMMAND has no understanding of native
CMake paths. So I must convert the paths to a native format, and
FILE(TO_NATIVE_PATH ...) does not properly escape and quote the path for
use by COMMAND. Also, the COMMAND string needs to be saved somehow. It
needs to be used by TRY_COMPILE, and again by my CMakeLists.txt, so that
I'm doing exactly the same thing each time. Saving the string is
problematic because passing the string around tends to destroy the
quoting. I have put a full work day into this, for what should be a
fairly trivial tool test, and I still don't quite have something that
works. I may yet come up with an interface that does work, but I
definitely wouldn't expect most CMake users (even experienced ones) to
go through all this pain.
What I'm saying is, tool testing is very weak in CMake, and a better way
is needed. When/if I get to the end of this tunnel, I will make a
specific recommendation rather than just complaining.
Cheers,
Brandon Van Every
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://public.kitware.com/pipermail/cmake/attachments/20060920/b4b7fa41/attachment.htm
More information about the CMake
mailing list