Skip to content

Commit f725da3

Browse files
committed
exporting CMake config module
1 parent be6df87 commit f725da3

File tree

5 files changed

+65
-2
lines changed

5 files changed

+65
-2
lines changed

conanfile.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,3 +45,5 @@ def package_info(self):
4545

4646
pkgconfig_dir = os.path.join(self.package_folder, "lib", "pkgconfig")
4747
self.env_info.PKG_CONFIG_PATH.append(pkgconfig_dir)
48+
49+
self.env_info.CMAKE_PREFIX_PATH.append(self.package_folder)

exports/build.jam

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,16 @@ includedir = [ install-path.includedir $(prefix) ] ;
1212
make enum-flags.pc : : @write-pc ;
1313
install install-pc : enum-flags.pc : <location>$(libdir)/pkgconfig ;
1414

15+
make enumflags-config.cmake : : @write-cmake-config ;
16+
make enumflags-config-version.cmake : : @write-cmake-version ;
17+
install install-cmake
18+
: enumflags-config.cmake
19+
enumflags-config-version.cmake
20+
: <location>$(libdir)/cmake/enumflags-$(VERSION)
21+
;
1522

16-
alias install : install-pc ;
17-
explicit install install-pc ;
23+
alias install : install-pc install-cmake ;
24+
explicit install install-pc install-cmake ;
1825

1926

2027
rule write-pc ( target : sources * : properties * ) {
@@ -28,6 +35,40 @@ rule write-pc ( target : sources * : properties * ) {
2835
}
2936

3037

38+
rule write-cmake-config ( target : sources * : properties * ) {
39+
write $(target)
40+
: "if(TARGET EnumFlags::EnumFlags)"
41+
" return()"
42+
"endif()"
43+
""
44+
"add_library(EnumFlags::EnumFlags INTERFACE IMPORTED)"
45+
"set_target_properties("
46+
" EnumFlags::EnumFlags"
47+
" PROPERTIES INTERFACE_INCLUDE_DIRECTORIES \"$(includedir)\""
48+
")"
49+
""
50+
;
51+
}
52+
53+
54+
rule write-cmake-version ( target : sources * : properties * ) {
55+
write $(target)
56+
: "set(PACKAGE_VERSION $(VERSION))"
57+
""
58+
"if(NOT PACKAGE_FIND_VERSION OR PACKAGE_FIND_VERSION EQUAL $(VERSION))"
59+
" set(PACKAGE_VERSION_EXACT TRUE)"
60+
" set(PACKAGE_VERSION_COMPATIBLE TRUE)"
61+
" set(PACKAGE_VERSION_UNSUITABLE FALSE)"
62+
"else()"
63+
" set(PACKAGE_VERSION_EXACT FALSE)"
64+
" set(PACKAGE_VERSION_COMPATIBLE FALSE)"
65+
" set(PACKAGE_VERSION_UNSUITABLE TRUE)"
66+
"endif()"
67+
""
68+
;
69+
}
70+
71+
3172
local rule write ( target : content * ) {
3273
print.output $(target) ;
3374
print.text $(content) ;

test/cmake/CMakeLists.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
cmake_minimum_required(VERSION 3.0)
2+
3+
project(EnumFlagsUser)
4+
5+
find_package(EnumFlags REQUIRED)
6+
7+
add_executable(app main.cpp)
8+
target_link_libraries(app EnumFlags::EnumFlags)

test/cmake/main.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#include <flags/flags.hpp>
2+
3+
int main() { return 0; }

test/conanfile.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from conans import (
2+
CMake,
23
ConanFile,
34
python_requires,
45
)
@@ -13,6 +14,7 @@ class EnumFlagsTestConan(ConanFile):
1314
build_requires = (
1415
"boost_build/[>=1.68]@bincrafters/stable",
1516
"boost_core/[>1.60]@bincrafters/stable",
17+
"cmake_installer/[>3.0]@conan/stable",
1618
)
1719
generators = "b2"
1820

@@ -27,3 +29,10 @@ def test(self):
2729
builder.build_folder = os.path.join(self.build_folder, "pkgconfig")
2830
builder.configure()
2931
builder.build()
32+
33+
builder = CMake(self)
34+
builder.configure(
35+
source_folder=os.path.join(self.source_folder, "cmake"),
36+
build_folder=os.path.join(self.build_folder, "cmake"),
37+
)
38+
builder.build()

0 commit comments

Comments
 (0)