[CMake] Add Custom COmmand and CMAKE_CFG_INTDIR

Bill Hoffman bill.hoffman at kitware.com
Wed Jan 4 16:11:29 EST 2012


On 1/4/2012 4:03 PM, Michael Jackson wrote:
> I robbed this from the HDF5 project which does something very similar to what I am doing:
>
> SET (CMD ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}${CFG_INIT}/H5detect${EXE_EXT})
>
> That "seems" to at least point to the proper location. Now to get Visual Studio to actually execute the executable.
That is pretty old stuff...

There are better ways to do that in CMake now:

cmake --help-command add_custom_command
....

        Arguments to COMMAND may use "generator expressions" with the syntax
        "$<...>".  Generator expressions are evaluted during build system
        generation to produce information specific to each build
        configuration.  Valid expressions are:

          $<CONFIGURATION>          = configuration name
          $<TARGET_FILE:tgt>        = main file (.exe, .so.1.2, .a)
          $<TARGET_LINKER_FILE:tgt> = file used to link (.a, .lib, .so)
          $<TARGET_SONAME_FILE:tgt> = file with soname (.so.3)

This should work:
   COMMAND $<TARGET_FILE:FilterWidgetCodeGen>

-Bill



> --
> Mike Jackson<www.bluequartz.net>
>
> On Jan 4, 2012, at 3:54 PM, clinton at elemtech.com wrote:
>
>> Have you tried excluding the ".exe" thing?  I thought cmake did the right thing for targets used in custom commands.
>>
>> Clint
>>
>> ----- Reply message -----
>> From: "Michael Jackson"<mike.jackson at bluequartz.net>
>> Date: Wed, Jan 4, 2012 1:28 pm
>> Subject: [CMake] Add Custom COmmand and CMAKE_CFG_INTDIR
>> To: "cmake at cmake.org List"<cmake at cmake.org>
>>
>> I am having trouble getting add_custom_Command and CMAKE_CFG_INTDIR to work correctly together. This is what I have so far.
>>
>> # ---------- Setup output Directories -------------------------
>> SET (CMAKE_LIBRARY_OUTPUT_DIRECTORY
>>   ${PROJECT_BINARY_DIR}/Bin
>>   CACHE PATH
>>   "Single Directory for all Libraries"
>>   )
>>
>> # Create our custom executable that will generate most of our QFilterWidget
>> # classes from information stored in the Filters themselves.
>> configure_file( ${FilterWidgets_SOURCE_DIR}/CodeGen.cpp.in
>>                 ${FilterWidgets_BINARY_DIR}/FilterWidgetCodeGen.cpp)
>> add_executable(FilterWidgetCodeGen ${FilterWidgets_BINARY_DIR}/FilterWidgetCodeGen.cpp)
>> target_link_libraries(FilterWidgetCodeGen MXA EbsdLib DREAM3DLib)
>> set(EXE_EXTENSION "")
>> if (WIN32)
>>   set (EXE_EXTENSION ".exe")
>> endif()
>> # Now run the code to generate the header files which will over write the place
>> # holder files that were generated from above
>> add_custom_command(TARGET FilterWidgetCodeGen POST_BUILD
>>             COMMAND FilterWidgetCodeGen${EXE_EXTENSION}
>>             WORKING_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
>>
>>
>> I know this is going to fail on visual studio, which it did. The issue is, what combination of CMAKE_CFG_INTDIR and anything else do I use to get this to work?
>>
>> Thanks
>> ___________________________________________________________
>> Mike Jackson                    Principal Software Engineer
>> BlueQuartz Software                            Dayton, Ohio
>> mike.jackson at bluequartz.net              www.bluequartz.net
>>
>> --
>>
>> Powered by 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
>>
>>
>
> --
>
> Powered by 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
>


-- 
Bill Hoffman
Kitware, Inc.
28 Corporate Drive
Clifton Park, NY 12065
bill.hoffman at kitware.com
http://www.kitware.com
518 881-4905 (Direct)
518 371-3971 x105
Fax (518) 371-4573


More information about the CMake mailing list