[CMake] RC compiler on Linux - new problem
Michael Hertling
mhertling at online.de
Fri Oct 21 19:19:06 EDT 2011
On 10/21/2011 06:49 PM, pellegrini wrote:
> Hi all,
>
> after digging and googling some hours I did a first step in the right
> direction.
>
> I had to add the command:
>
> enable_language(rc)
> set(cmake_rc_compiler_arg1 -cif8)
>
> The resource compiler I (must) use is the one provided by winteracter
> Fortran library.
>
> This led me to a serie of problems related to the use of this compiler:
> - it does not accept any output flag so that the output resource
> object is always created "in-source" in the rc file directory.
> - on Linux, it produces a .o object file instead of a .res file
>
> Looking at the CMakeRCInformation.cmake I see that by construction CMake
> will use the following compile command:
> "<CMAKE_RC_COMPILER> <FLAGS> <DEFINES> /fo<OBJECT> <SOURCE>"
> with a resource object file with a .res extension.
You might rewrite this rule variable, e.g. in order to drop
/fo<OBJECT>, but this wouldn't resolve your issues, AFAICS.
> On a Linux machine, this produces a wrong build command line with the
> path for the output object file being "/foCMakeFiles/...". This problem
> was raised sometime ago in the mantis bug tracker but unfortunatley the
> patch proposed apply for mingw using windres but not for Linux.
>
> Is there a fix for this ?
>
> If no, is there a way to inform the linker that:
> - my resource object file is located "in-source"
You might create symlinks to the resource files - or copy them - so
that the winteracter RC generates its output files within the build
tree; note that the source tree may be read-only. This could even be
done on the fly with an adapted version of ADD_EXECUTABLE/LIBRARY().
> - the extension is not .res but .o
You might use a RULE_LAUNCH_COMPILE property in conjunction with a
shell script which recognizes RC command lines, moves the .o to a
.res in the correct directory and drops the undesired /fo switch.
The attached CMakeLists.txt and rc.sh files outline these approaches;
check them out with meaningful ${CMAKE_SOURCE_DIR}/{abs,srcdir}.rc
and ${CMAKE_BINARY_DIR}/bindir.rc. However, they are untested as I
currently haven't any RC at hand; moreover, they're restricted to
Makefiles and won't work on Windows.
Regards,
Michael
> pellegrini a écrit :
>> Hi all,
>>
>> I use CMake 2.8.5 on Linux and Windows machine to build a Fortran
>> project.
>>
>> On Windows, no problem, the build and the resulting GUI are OK. On
>> Linux, the build seems to
>> be OK but the resulting GUI gives an empty screen. Discussing with
>> Michael a few days ago made
>> me think that it could be related to the use of an inappropriated
>> motif library.
>>
>> However, looking in more details I see with a make VERBOSE=1 that my
>> rc file is not built
>> (I do not see the line "Building RC object ..."). even if it is
>> declared as one of my sources files.
>>
>> Is there some extra commands to specify to make cmake recognize and
>> compile a rc file ?
>>
>> thanks
>>
>> Eric
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: CMakeLists.txt
URL: <http://www.cmake.org/pipermail/cmake/attachments/20111022/e6f02cd3/attachment.txt>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: rc.sh
Type: application/x-sh
Size: 305 bytes
Desc: not available
URL: <http://www.cmake.org/pipermail/cmake/attachments/20111022/e6f02cd3/attachment.sh>
More information about the CMake
mailing list