Sure you can:
 INCLUDE (MSVC_Compiler_Stuff.cmake)

#----------MSVC_Compiler_Stuff.cmake
if (MSVC)

endif (MSVC)


I do this all the time for OS X specific stuff.

For Linux you can try:

IF(CMAKE_SYSTEM MATCHES "Linux-([3-9]\\.[0-9]|2\\.[4-9])\\.")
  # Linux Specific flags

ENDIF(CMAKE_SYSTEM MATCHES "Linux-([3-9]\\.[0-9]|2\\.[4-9])\\.")

if you are using ICC on linux you can also test for that:

IF( ${CMAKE_C_COMPILER} MATCHES "icc" )
    SET(CMAKE_EXE_LINKER_FLAGS ${CMAKE_EXE_LINKER_FLAGS} -static-intel)
ENDIF( ${CMAKE_C_COMPILER} MATCHES "icc" )

or test for GCC:

IF(CMAKE_COMPILER_IS_GNUCC)
  SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fmessage-length=0")
ENDIF(CMAKE_COMPILER_IS_GNUCC)
IF(CMAKE_COMPILER_IS_GNUCXX)
  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fmessage-length=0")
ENDIF(CMAKE_COMPILER_IS_GNUCXX)


Hope that helps a bit

-- Mike Jackson Senior Research Engineer
Innovative Management & Technology Services


On Jun 5, 2008, at 11:21 AM, Martin Apel wrote:

Unfortunately I cannot simply add one file with platform specifics for each additional platform. Instead I have to clutter up the main CMakeLists.txt with if statements. Especially there is no way to support platforms for which no explicitly testable variable is available e.g. Linux. Strange enough is, that WIN32 is set before the PROJECT statement, while CMAKE_SYSTEM_NAME is not.

Martin

Mike Jackson wrote:
IF (WIN32)
SET(......)
ENDIF (WIN32)

IF (MSVC)

ENDIF (MSVC)
-- Mike Jackson   Senior Research Engineer
Innovative Management & Technology Services


On Jun 5, 2008, at 10:35 AM, Martin Apel wrote:

Hi all,

I am trying to set the CMAKE_CXX_FLAGS or CMAKE_CXX_FLAGS_INIT variable, such that it contains flags to turn off specific warnings for the Visual Studio compiler. I definitely want to set these additional flags from within a CMakeFile, specifying them on the command line or interactively is not an option.
I have included a Windows-specific file by using
INCLUDE (${CMAKE_SYSTEM_NAME}.cmake)

The file Windows.cmake contains the line
SET (ENV{CXXFLAGS} "/wd4251")

However this only works after the PROJECT line within the CMakeFile, because before it CMAKE_SYSTEM_NAME seems to be unset. On the other hand, when writing the include statement after the project command, the CMAKE_CXX_FLAGS seem already to be set. If possible I would like to specify those flags as initial values, avoiding to use the force option of the set command.

What is the recommended way to add platform-specific compiler flags from within CMakeFiles?

Any help would be appreciated.

Martin

_______________________________________________
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake




--

Martin Apel Tel: 0049 8153 9288-47 Software Architect E-Mail: [EMAIL PROTECTED]

INTEC GmbH Tel: 0049 8153 9288-0 Argelsrieder Feld 13 Fax: 0049 8153 9288-11 82234 Wessling E-Mail: [EMAIL PROTECTED] Germany URL: http:// www.simpack.com


_______________________________________________
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to