ENH: add new test to make sure c and cxx flags are going to the right files
This commit is contained in:
parent
4f79ce8f1b
commit
8dc6db4777
|
@ -3,6 +3,7 @@ CMAKE_MINIMUM_REQUIRED(VERSION 1.3)
|
|||
# Create exe.
|
||||
#
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DTEST_CXX_FLAGS")
|
||||
SET(CMAKE_C_FLAGS "${CMAKE_C} -DTEST_C_FLAGS")
|
||||
|
||||
# Link to CMake lib
|
||||
LINK_DIRECTORIES(${Complex_BINARY_DIR}/../../Source)
|
||||
|
@ -14,7 +15,7 @@ SET(COMPLEX_LIBS CMakeTestLibrary;CMakeTestLibraryShared;CMakeTestCLibraryShared
|
|||
LINK_LIBRARIES(${COMPLEX_LIBS})
|
||||
|
||||
ADD_EXECUTABLE(A A.cxx)
|
||||
ADD_EXECUTABLE(complex complex)
|
||||
ADD_EXECUTABLE(complex complex testcflags.c)
|
||||
ADD_EXECUTABLE(complex.file complex.file.cxx)
|
||||
TARGET_LINK_LIBRARIES(complex CMakeLib cmsys cmexpat cmzlib)
|
||||
IF (UNIX)
|
||||
|
|
|
@ -258,6 +258,8 @@ void TestCMGeneratedFileSTream()
|
|||
cmSystemTools::RemoveFile(file2tmp.c_str());
|
||||
cmSystemTools::RemoveFile(file3tmp.c_str());
|
||||
}
|
||||
// defined in testcflags.c
|
||||
extern "C" int TestCFlags(char* m);
|
||||
|
||||
// ======================================================================
|
||||
|
||||
|
@ -372,6 +374,21 @@ int main()
|
|||
#else
|
||||
cmPassed("CMake CMAKE_CXX_FLAGS is being passed to the compiler.");
|
||||
#endif
|
||||
#ifdef TEST_C_FLAGS
|
||||
cmFailed("CMake CMAKE_C_FLAGS are being passed to c++ files the compiler!");
|
||||
#else
|
||||
cmPassed("CMake CMAKE_C_FLAGS are not being passed to c++ files.");
|
||||
#endif
|
||||
char msg[1024];
|
||||
if(TestCFlags(msg))
|
||||
{
|
||||
cmPassed(
|
||||
"CMake CMAKE_C_FLAGS are being passed to c files and CXX flags are not.");
|
||||
}
|
||||
else
|
||||
{
|
||||
cmFailed(msg);
|
||||
}
|
||||
// ----------------------------------------------------------------------
|
||||
// Test ADD_DEFINITIONS
|
||||
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
#include <string.h>
|
||||
int TestCFlags(char* m)
|
||||
{
|
||||
// TEST_CXX_FLAGS should not be defined in a c file
|
||||
#ifdef TEST_CXX_FLAGS
|
||||
strcpy(m, "CMake CMAKE_CXX_FLAGS (TEST_CXX_FLAGS) found in c file.");
|
||||
return 0;
|
||||
#endif
|
||||
// TEST_C_FLAGS should be defined in a c file
|
||||
#ifndef TEST_C_FLAGS
|
||||
strcpy(m, "CMake CMAKE_C_FLAGS (TEST_C_FLAGS) not found in c file.");
|
||||
return 0;
|
||||
#endif
|
||||
return 1;
|
||||
}
|
|
@ -3,6 +3,7 @@ CMAKE_MINIMUM_REQUIRED(VERSION 1.3)
|
|||
# Create exe.
|
||||
#
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DTEST_CXX_FLAGS")
|
||||
SET(CMAKE_C_FLAGS "${CMAKE_C} -DTEST_C_FLAGS")
|
||||
|
||||
# Link to CMake lib
|
||||
LINK_DIRECTORIES(${Complex_BINARY_DIR}/../../Source)
|
||||
|
@ -14,7 +15,7 @@ SET(COMPLEX_LIBS CMakeTestLibrary;CMakeTestLibraryShared;CMakeTestCLibraryShared
|
|||
LINK_LIBRARIES(${COMPLEX_LIBS})
|
||||
|
||||
ADD_EXECUTABLE(A A.cxx)
|
||||
ADD_EXECUTABLE(complex complex)
|
||||
ADD_EXECUTABLE(complex complex testcflags.c)
|
||||
ADD_EXECUTABLE(complex.file complex.file.cxx)
|
||||
TARGET_LINK_LIBRARIES(complex CMakeLib cmsys cmexpat cmzlib)
|
||||
IF (UNIX)
|
||||
|
|
|
@ -258,6 +258,8 @@ void TestCMGeneratedFileSTream()
|
|||
cmSystemTools::RemoveFile(file2tmp.c_str());
|
||||
cmSystemTools::RemoveFile(file3tmp.c_str());
|
||||
}
|
||||
// defined in testcflags.c
|
||||
extern "C" int TestCFlags(char* m);
|
||||
|
||||
// ======================================================================
|
||||
|
||||
|
@ -372,6 +374,21 @@ int main()
|
|||
#else
|
||||
cmPassed("CMake CMAKE_CXX_FLAGS is being passed to the compiler.");
|
||||
#endif
|
||||
#ifdef TEST_C_FLAGS
|
||||
cmFailed("CMake CMAKE_C_FLAGS are being passed to c++ files the compiler!");
|
||||
#else
|
||||
cmPassed("CMake CMAKE_C_FLAGS are not being passed to c++ files.");
|
||||
#endif
|
||||
char msg[1024];
|
||||
if(TestCFlags(msg))
|
||||
{
|
||||
cmPassed(
|
||||
"CMake CMAKE_C_FLAGS are being passed to c files and CXX flags are not.");
|
||||
}
|
||||
else
|
||||
{
|
||||
cmFailed(msg);
|
||||
}
|
||||
// ----------------------------------------------------------------------
|
||||
// Test ADD_DEFINITIONS
|
||||
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
#include <string.h>
|
||||
int TestCFlags(char* m)
|
||||
{
|
||||
// TEST_CXX_FLAGS should not be defined in a c file
|
||||
#ifdef TEST_CXX_FLAGS
|
||||
strcpy(m, "CMake CMAKE_CXX_FLAGS (TEST_CXX_FLAGS) found in c file.");
|
||||
return 0;
|
||||
#endif
|
||||
// TEST_C_FLAGS should be defined in a c file
|
||||
#ifndef TEST_C_FLAGS
|
||||
strcpy(m, "CMake CMAKE_C_FLAGS (TEST_C_FLAGS) not found in c file.");
|
||||
return 0;
|
||||
#endif
|
||||
return 1;
|
||||
}
|
|
@ -3,6 +3,7 @@ CMAKE_MINIMUM_REQUIRED(VERSION 1.3)
|
|||
# Create exe.
|
||||
#
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DTEST_CXX_FLAGS")
|
||||
SET(CMAKE_C_FLAGS "${CMAKE_C} -DTEST_C_FLAGS")
|
||||
|
||||
# Link to CMake lib
|
||||
LINK_DIRECTORIES(${Complex_BINARY_DIR}/../../Source)
|
||||
|
@ -14,7 +15,7 @@ SET(COMPLEX_LIBS CMakeTestLibrary;CMakeTestLibraryShared;CMakeTestCLibraryShared
|
|||
LINK_LIBRARIES(${COMPLEX_LIBS})
|
||||
|
||||
ADD_EXECUTABLE(A A.cxx)
|
||||
ADD_EXECUTABLE(complex complex)
|
||||
ADD_EXECUTABLE(complex complex testcflags.c)
|
||||
ADD_EXECUTABLE(complex.file complex.file.cxx)
|
||||
TARGET_LINK_LIBRARIES(complex CMakeLib cmsys cmexpat cmzlib)
|
||||
IF (UNIX)
|
||||
|
|
|
@ -258,6 +258,8 @@ void TestCMGeneratedFileSTream()
|
|||
cmSystemTools::RemoveFile(file2tmp.c_str());
|
||||
cmSystemTools::RemoveFile(file3tmp.c_str());
|
||||
}
|
||||
// defined in testcflags.c
|
||||
extern "C" int TestCFlags(char* m);
|
||||
|
||||
// ======================================================================
|
||||
|
||||
|
@ -372,6 +374,21 @@ int main()
|
|||
#else
|
||||
cmPassed("CMake CMAKE_CXX_FLAGS is being passed to the compiler.");
|
||||
#endif
|
||||
#ifdef TEST_C_FLAGS
|
||||
cmFailed("CMake CMAKE_C_FLAGS are being passed to c++ files the compiler!");
|
||||
#else
|
||||
cmPassed("CMake CMAKE_C_FLAGS are not being passed to c++ files.");
|
||||
#endif
|
||||
char msg[1024];
|
||||
if(TestCFlags(msg))
|
||||
{
|
||||
cmPassed(
|
||||
"CMake CMAKE_C_FLAGS are being passed to c files and CXX flags are not.");
|
||||
}
|
||||
else
|
||||
{
|
||||
cmFailed(msg);
|
||||
}
|
||||
// ----------------------------------------------------------------------
|
||||
// Test ADD_DEFINITIONS
|
||||
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
#include <string.h>
|
||||
int TestCFlags(char* m)
|
||||
{
|
||||
// TEST_CXX_FLAGS should not be defined in a c file
|
||||
#ifdef TEST_CXX_FLAGS
|
||||
strcpy(m, "CMake CMAKE_CXX_FLAGS (TEST_CXX_FLAGS) found in c file.");
|
||||
return 0;
|
||||
#endif
|
||||
// TEST_C_FLAGS should be defined in a c file
|
||||
#ifndef TEST_C_FLAGS
|
||||
strcpy(m, "CMake CMAKE_C_FLAGS (TEST_C_FLAGS) not found in c file.");
|
||||
return 0;
|
||||
#endif
|
||||
return 1;
|
||||
}
|
Loading…
Reference in New Issue