On Tue, Dec 15, 2009 at 4:13 AM, Johan Knutzen <knutzen_joh...@yahoo.se> wrote:
>
> Hi!
>
> What is the status of scripts enabling precompiled headers for gcc/visual 
> studio? I've tried out PCHSupport_26 from 
> http://www.cmake.org/Bug/view.php?id=1260 but I couldn't get it to work. Does 
> anyone have any up to date script that works with 2.8?
>

I have not bothered in linux since I can use ccache to speed up
builds. In windows I use the following macro:

#########################################################################################

macro( SM_PCH_SUPPORT ProjectName )
if (MSVC)
        if (USE_MSVC_PCH)
        
                set_source_files_properties(${ProjectName}PCH.cxx
                        PROPERTIES
                        COMPILE_FLAGS "/Yc${ProjectName}PCH.h"
                        )
                foreach( src_file ${${ProjectName}_SRCS} )
                        set_source_files_properties(
                                ${src_file}
                                PROPERTIES
                                COMPILE_FLAGS "/Yu${ProjectName}PCH.h"
                                )
                endforeach( src_file ${${ProjectName}_SRCS} )
                
                list(APPEND ${ProjectName}_SRCS ${ProjectName}PCH.cxx)
                list(APPEND ${ProjectName}_EXT_HDRS ${ProjectName}PCH.h)

        endif(USE_MSVC_PCH)
endif (MSVC)
endmacro (SM_PCH_SUPPORT)

#########################################################################################


And this requires me to have my source variable named ${ProjectName}_SRCS

And my header variable to be named ${ProjectName}_EXT_HDRS

and the following files to exist in the same folder as the CMakeLists.txt

${ProjectName}PCH.cxx ${ProjectName}PCH.h

I generally put this macro in the main project before my first
add_subdirectory so that all subprojects can use the macro as well.

Then to activate this in a project. I place the macro call after I
define the list variables.

SET( smDataManagement_SRCS
        ./src/smData.cxx
        ./src/smDataOperation.cxx
        ./src/smCounterBalanceOperation.cxx
)

SET( smDataManagement_EXT_HDRS
        ./Include/smData.h
        ./Include/smDataOperation.h
        ./Include/smCounterBalanceOperation.h
)

SET( smDataManagement_MOC_HDRS
        
)

# some .ui files
SET( smDataManagement_UIS
)

# and finally an resource file
SET( smDataManagement_RCS
)

SET( smDataManagement_INT_HDRS

)

#Add precompiled header support
SM_PCH_SUPPORT(smDataManagement)

This works in cmake-2.6 and above.
John
_______________________________________________
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

Reply via email to