Much improved test, should now be executed on all UNIXes
Instead of relying on that some development package is installed on the system, now a tiny library is built, which is the searched and used during the test. Alex
This commit is contained in:
parent
ec6982dc8c
commit
626fc717c6
|
@ -1,22 +1,20 @@
|
|||
|
||||
if("${CMAKE_CXX_COMPILER_ID}" MATCHES GNU
|
||||
OR "${CMAKE_CXX_COMPILER_ID}" MATCHES Intel
|
||||
OR "${CMAKE_CXX_COMPILER_ID}" MATCHES Clang
|
||||
OR "${CMAKE_CXX_COMPILER_ID}" MATCHES XL
|
||||
OR "${CMAKE_CXX_COMPILER_ID}" MATCHES SunPro)
|
||||
|
||||
find_package(PNG)
|
||||
# the test program links against the png lib, so test first whether it exists
|
||||
if(UNIX AND "${CMAKE_GENERATOR}" MATCHES "Makefile")
|
||||
|
||||
# the test program links against the png lib, so test first whether it exists
|
||||
if(PNG_FOUND AND UNIX AND "${CMAKE_GENERATOR}" MATCHES "Makefile")
|
||||
# build a library which we can search during the test
|
||||
add_library(foo STATIC foo.cpp)
|
||||
|
||||
get_target_property(cmakeExecutable cmake LOCATION)
|
||||
# configure a FindFoo.cmake so it knows where the library can be found
|
||||
configure_file(FindFoo.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/FindFoo.cmake @ONLY)
|
||||
|
||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Makefile.in ${CMAKE_CURRENT_BINARY_DIR}/ConfMakefile @ONLY)
|
||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/main.cpp ${CMAKE_CURRENT_BINARY_DIR}/main.cpp COPYONLY)
|
||||
# now set up the test:
|
||||
get_target_property(cmakeExecutable cmake LOCATION)
|
||||
|
||||
add_test(FindPackageModeMakefileTest ${CMAKE_MAKE_PROGRAM} -f ${CMAKE_CURRENT_BINARY_DIR}/ConfMakefile )
|
||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Makefile.in ${CMAKE_CURRENT_BINARY_DIR}/ConfMakefile @ONLY)
|
||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/main.cpp ${CMAKE_CURRENT_BINARY_DIR}/main.cpp COPYONLY)
|
||||
|
||||
endif()
|
||||
add_test(FindPackageModeMakefileTest ${CMAKE_MAKE_PROGRAM} -f ${CMAKE_CURRENT_BINARY_DIR}/ConfMakefile )
|
||||
|
||||
endif()
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
|
||||
find_library(FOO_LIBRARY NAMES foo HINTS "@CMAKE_CURRENT_BINARY_DIR@" )
|
||||
find_path(FOO_INCLUDE_DIR NAMES foo.h HINTS "@CMAKE_CURRENT_SOURCE_DIR@" )
|
||||
|
||||
set(FOO_LIBRARIES ${FOO_LIBRARY})
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(Foo DEFAULT_MSG FOO_LIBRARY FOO_INCLUDE_DIR )
|
|
@ -1,10 +1,10 @@
|
|||
all: clean pngtest
|
||||
|
||||
main.o: main.cpp
|
||||
"@CMAKE_CXX_COMPILER@" -c `"@cmakeExecutable@" --find-package -DNAME=PNG -DLANGUAGE=CXX -DCOMPILER_ID=@CMAKE_CXX_COMPILER_ID@ -DMODE=COMPILE` main.cpp
|
||||
"@CMAKE_CXX_COMPILER@" -c `"@cmakeExecutable@" --find-package -DCMAKE_MODULE_PATH="@CMAKE_CURRENT_BINARY_DIR@" -DNAME=Foo -DLANGUAGE=CXX -DCOMPILER_ID=@CMAKE_CXX_COMPILER_ID@ -DMODE=COMPILE` main.cpp
|
||||
|
||||
pngtest: main.o
|
||||
"@CMAKE_CXX_COMPILER@" -o pngtest main.o `"@cmakeExecutable@" --find-package -DNAME=PNG -DLANGUAGE=CXX -DCOMPILER_ID=@CMAKE_CXX_COMPILER_ID@ -DMODE=LINK`
|
||||
"@CMAKE_CXX_COMPILER@" -o pngtest main.o `"@cmakeExecutable@" --find-package -DCMAKE_MODULE_PATH="@CMAKE_CURRENT_BINARY_DIR@" -DNAME=Foo -DLANGUAGE=CXX -DCOMPILER_ID=@CMAKE_CXX_COMPILER_ID@ -DMODE=LINK`
|
||||
|
||||
clean:
|
||||
rm -f *.o pngtest
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
int foo()
|
||||
{
|
||||
return 1477;
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
#ifndef FOO_H
|
||||
#define FOO_H
|
||||
|
||||
int foo();
|
||||
|
||||
#endif
|
|
@ -1,8 +1,8 @@
|
|||
#include <stdio.h>
|
||||
#include <png.h>
|
||||
#include <foo.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
printf("PNG copyright: %s\n", png_get_copyright(NULL));
|
||||
printf("foo is: %d\n", foo());
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue