<html><head></head><body><div style="font-family: Verdana;font-size: 12.0px;"><div>Hello,</div>

<div> </div>

<div>I wanted to use a Python script to generate dependencies for cmake, and only reconfigure if these parameters changed [like additional sources, additional linker scripts, ...].</div>

<div> </div>

<div>I managed to create these dependencies in a file, read these from cmake and configure my project accordingly, via the following scheme. It should be noted that script.py creates dependencies.txt and only overwrites the previous version, if its content changed [so that configure_file should only see a change time-stamp when the content changed].</div>

<div> </div>

<div> </div>

<div>set(PYTHON_GENERATOR pythonGenerator)<br/>
set(DEPENDENCIES_FILE dependencies.txt)<br/>
set(DEPENDENCIES_FILE_COPY dependencies.txt.copy)</div>

<div> </div>

<div># custom target to run python script</div>

<div>add_custom_target(${PYTHON_GENERATOR}<br/>
            COMMAND python script.py<br/>
            DEPENDS ${TEST_SOURCE}<br/>
        )</div>

<div> </div>

<div># re-configure when file changed<br/>
configure_file(${DEPENDENCIES_FILE} ${DEPENDENCIES_FILE_COPY} COPYONLY)<br/>
file(REMOVE ${DEPENDENCIES_FILE_COPY})</div>

<div> </div>

<div><br/>
# create real executable target which uses the generated source file<br/>
add_executable(executable ${TEST_SOURCE})<br/>
<br/>
add_dependencies(executable ${PYTHON_GENERATOR})</div>

<div> </div>

<div> </div>

<div> </div>

<div>My current problem is that make checks whether ${DEPENDENCIES_FILE} changed before potentially creating the file dependencies.txt anew. Thus I have to run make twice, for it to see the changes.</div>

<div> </div>

<div>Is there a simpler way to always run my python script before mis-using configure_file?</div>

<div> </div>

<div>Do you know of a simpler way to configure only when the dependencies changed?</div>

<div> </div>

<div>Hope I could state clear anough what my problem is. Would be glad to answer any relating questions. Any help is going to be appreciated.</div>

<div> </div>

<div>Best regards,</div>

<div> </div>

<div>Johannes</div></div></body></html>