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
|
# build a library which we can search during the test
|
||||||
if(PNG_FOUND AND UNIX AND "${CMAKE_GENERATOR}" MATCHES "Makefile")
|
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)
|
# now set up the test:
|
||||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/main.cpp ${CMAKE_CURRENT_BINARY_DIR}/main.cpp COPYONLY)
|
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()
|
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
|
all: clean pngtest
|
||||||
|
|
||||||
main.o: main.cpp
|
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
|
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:
|
clean:
|
||||||
rm -f *.o pngtest
|
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 <stdio.h>
|
||||||
#include <png.h>
|
#include <foo.h>
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
printf("PNG copyright: %s\n", png_get_copyright(NULL));
|
printf("foo is: %d\n", foo());
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue