[CMake] Fwd: Re: Compiler debug file, howto remove in clean?

Totte Karlsson totte at dunescientific.com
Wed Dec 14 03:43:49 EST 2011


On 12/13/2011 4:15 PM, David Cole wrote:
> RUNTIME_OUTPUT_DIRECTORY is a target property, not a variable. You'd
> have to use get_property to retrieve its value, not
> ${RUNTIME_OUTPUT_DIRECTORY}...

Thanks! I ended up with the following, in the targets CMakeList file

get_property(exe_path TARGET ${target} PROPERTY RUNTIME_OUTPUT_DIRECTORY)
set_property(DIRECTORY PROPERTY ADDITIONAL_MAKE_CLEAN_FILES 
${exe_path}/${target}.tds)
and that seem to work fine.

Question 1: What is best practice? To do the "get_property" in a top level 
CmakeList file and set_property in each targets CMakeList file. Or do I need 
both lines in each target CMakeList file?

Q 2: I have
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY 	${PROJECT_BINARY_DIR}/bins)

in the top level CMakeList file. If I want a variable corresponding to the 
RUNTIME_OUTPUT_DIRECTORY property, is there a best practice naming convention 
for such? For example, is it possible to create a variable with the same name, like:

get_property(RUNTIME_OUTPUT_DIRECTORY TARGET ${target} PROPERTY 
RUNTIME_OUTPUT_DIRECTORY)
?


-totte

>
>
> HTH,
> David
>
>
> On Tue, Dec 13, 2011 at 10:04 AM, Totte Karlsson
> <totte at dunescientific.com>  wrote:
>> not sure if the following was sent to the newsgroup?
>> Sorry if posting double..
>>
>>>> set_property(DIRECTORY PROPERTY ADDITIONAL_MAKE_CLEAN_FILES
>>>>
>>>>                         ${RUNTIME_OUTPUT_DIRECTORY}/${target}.tds
>>>>                         )
>>>>
>>>
>>> Is your RUNTIME_OUTPUT_DIRECTORY variable set up correctly?
>>
>>
>> In the top Cmake file I have
>> set(EXECUTABLE_OUTPUT_PATH      ${PROJECT_BINARY_DIR}/bins)
>> set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_PATH})
>> Not sure if that is best practice? I'm a cmake beginner
>>
>>
>> Do you
>>>
>>> perhaps mean the target property of this name instead, and what's
>>> the value of your "target" variable?
>>
>>
>> In the 'target' cmake file, where the target is an application or a dll, it
>> looks something like (for an application 'read_from_file'):
>>
>> set(target read_from_file)
>> add_executable(${target} main.cpp)
>>
>> #MTK libraries
>> target_link_libraries (${target} mtkCommon)
>> ...
>> #VTK libraries
>> target_link_libraries(${target} vtkCommon)
>> ....
>> ADD_CUSTOM_COMMAND(
>> TARGET ${target} POST_BUILD
>> COMMAND echo ${target} and ${EXECUTABLE_OUTPUT_PATH}
>> COMMAND ${CMAKE_COMMAND} -E copy_if_different
>>     ${CMAKE_CURRENT_SOURCE_DIR}/ball.mtk ${EXECUTABLE_OUTPUT_PATH}
>> COMMAND ${CMAKE_COMMAND} -E copy_if_different
>>     ${CMAKE_CURRENT_SOURCE_DIR}/Alanine.mtk ${EXECUTABLE_OUTPUT_PATH}
>> )
>>
>> set_property(DIRECTORY PROPERTY ADDITIONAL_MAKE_CLEAN_FILES
>>                         ${EXECUTABLE_OUTPUT_PATH}/ball.mtk
>>                         ${EXECUTABLE_OUTPUT_PATH}/Alanine.mtk
>>
>>                         ${RUNTIME_OUTPUT_DIRECTORY}/${target}.tds
>>                         )
>>
>> #then comes installs, omitted...
>> install (TARGETS ${target}                              DESTINATION bins)
>> ...
>>
>> In the set_property command, the cleaning works for the text files, ball and
>> Alanine.mtk. Interestingly, if I change it to
>>                         ${EXCECUTABLE_PATH}/${target}.tds
>>
>> So I guess the RUNTIME_OUTPUT_DIRECTORY variable is not set correctly? I
>> thought
>> I read somewhere it is setup when the CMAKE_RUNTIME_OUTPUT_DIRECTORY is
>> setup?
>>
>> Any feedback appreciated!
>> totte
>>
>> --
>>
>> 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


More information about the CMake mailing list