Skip to content

Commit aad4f3c

Browse files
chore: add find_package support, redesign project structure, separate tests
1 parent 293f21c commit aad4f3c

13 files changed

Lines changed: 249 additions & 189 deletions

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ Release/
55
x64/
66
x86/
77
build/
8+
install/
89
.idea/
910

1011
*.o

CMakeLists.txt

Lines changed: 34 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,46 @@
11
cmake_minimum_required(VERSION 3.15)
2-
project(obfuscxx VERSION 1.0.0 LANGUAGES CXX)
2+
project(obfuscxx VERSION 1.3.1 LANGUAGES CXX)
33

4-
## message(STATUS "=========================================")
5-
## message(STATUS "C Compiler: ${CMAKE_C_COMPILER}")
6-
## message(STATUS "C++ Compiler: ${CMAKE_CXX_COMPILER}")
7-
## message(STATUS "Compiler ID: ${CMAKE_CXX_COMPILER_ID}")
8-
## message(STATUS "Compiler Version: ${CMAKE_CXX_COMPILER_VERSION}")
9-
## message(STATUS "=========================================")
4+
add_library(obfuscxx INTERFACE)
5+
add_library(obfuscxx::obfuscxx ALIAS obfuscxx)
106

11-
set(CMAKE_CXX_STANDARD 20)
12-
set(CMAKE_CXX_STANDARD_REQUIRED ON)
13-
set(CMAKE_CXX_EXTENSIONS OFF)
14-
15-
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
16-
17-
find_package(GTest CONFIG REQUIRED)
18-
find_package(benchmark CONFIG REQUIRED)
19-
20-
add_executable(obfuscxx_test main.cpp)
7+
target_include_directories(
8+
obfuscxx INTERFACE
9+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
10+
$<INSTALL_INTERFACE:include>
11+
)
2112

22-
target_link_libraries(obfuscxx_test PRIVATE
23-
GTest::gtest
24-
benchmark::benchmark
25-
Threads::Threads
13+
install(DIRECTORY include/
14+
DESTINATION include
15+
FILES_MATCHING PATTERN "*.h"
2616
)
27-
target_include_directories(obfuscxx_test PRIVATE
28-
include
17+
18+
install(TARGETS obfuscxx
19+
EXPORT obfuscxxTargets
2920
)
3021

31-
target_compile_options(obfuscxx_test PRIVATE
32-
$<$<CXX_COMPILER_ID:MSVC>:/constexpr:steps10000000>
33-
$<$<CXX_COMPILER_ID:GNU>:-mavx2>
34-
$<$<CXX_COMPILER_ID:Clang>:-mavx2>
22+
install(EXPORT obfuscxxTargets
23+
FILE obfuscxxTargets.cmake
24+
NAMESPACE obfuscxx::
25+
DESTINATION lib/cmake/obfuscxx
3526
)
3627

37-
target_compile_definitions(obfuscxx_test PRIVATE
38-
$<$<CXX_COMPILER_ID:MSVC>:OBFUSCXX_MSVC_FORCE_AVX2>
28+
include(CMakePackageConfigHelpers)
29+
30+
configure_package_config_file(
31+
${CMAKE_CURRENT_SOURCE_DIR}/cmake/obfuscxxConfig.cmake.in
32+
${CMAKE_CURRENT_BINARY_DIR}/obfuscxxConfig.cmake
33+
INSTALL_DESTINATION lib/cmake/obfuscxx
3934
)
4035

41-
enable_testing()
42-
add_test(NAME obfuscxx_test COMMAND obfuscxx_test)
36+
write_basic_package_version_file(
37+
${CMAKE_CURRENT_BINARY_DIR}/obfuscxxConfigVersion.cmake
38+
VERSION ${PROJECT_VERSION}
39+
COMPATIBILITY SameMajorVersion
40+
)
4341

44-
include(GoogleTest)
42+
install(FILES
43+
${CMAKE_CURRENT_BINARY_DIR}/obfuscxxConfig.cmake
44+
${CMAKE_CURRENT_BINARY_DIR}/obfuscxxConfigVersion.cmake
45+
DESTINATION lib/cmake/obfuscxx
46+
)

cmake/obfuscxxConfig.cmake.in

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
@PACKAGE_INIT@
2+
3+
include("${CMAKE_CURRENT_LIST_DIR}/obfuscxxTargets.cmake")
4+
5+
check_required_components(obfuscxx)

main.cpp

Lines changed: 0 additions & 39 deletions
This file was deleted.
Lines changed: 114 additions & 114 deletions
Original file line numberDiff line numberDiff line change
@@ -1,115 +1,115 @@
1-
{
2-
"version": 6,
3-
"cmakeMinimumRequired": {
4-
"major": 3,
5-
"minor": 15,
6-
"patch": 0
7-
},
8-
"configurePresets": [
9-
{
10-
"name": "base-release",
11-
"hidden": true,
12-
"cacheVariables": {
13-
"CMAKE_BUILD_TYPE": "Release",
14-
"CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
15-
}
16-
},
17-
{
18-
"name": "msvc-x64",
19-
"inherits": "base-release",
20-
"displayName": "MSVC x64 Release",
21-
"binaryDir": "${sourceDir}/build/msvc-x64",
22-
"toolset": "v143",
23-
"cacheVariables": {
24-
"CMAKE_MSVC_RUNTIME_LIBRARY": "MultiThreadedDLL",
25-
"VCPKG_TARGET_TRIPLET": "x64-windows"
26-
}
27-
},
28-
{
29-
"name": "msvc-x86",
30-
"inherits": "base-release",
31-
"displayName": "MSVC x86 Release",
32-
"binaryDir": "${sourceDir}/build/msvc-x86",
33-
"toolset": "v143",
34-
"architecture": "Win32",
35-
"cacheVariables": {
36-
"CMAKE_MSVC_RUNTIME_LIBRARY": "MultiThreadedDLL",
37-
"VCPKG_TARGET_TRIPLET": "x86-windows"
38-
}
39-
},
40-
{
41-
"name": "llvm-x64",
42-
"inherits": "base-release",
43-
"displayName": "LLVM x64 Release",
44-
"binaryDir": "${sourceDir}/build/llvm-x64",
45-
"toolset": "ClangCL",
46-
"cacheVariables": {
47-
"VCPKG_TARGET_TRIPLET": "x64-windows"
48-
}
49-
},
50-
{
51-
"name": "gcc-mingw-x64",
52-
"inherits": "base-release",
53-
"displayName": "GCC MinGW x64 Release",
54-
"binaryDir": "${sourceDir}/build/gcc-mingw-x64",
55-
"generator": "Ninja",
56-
"cacheVariables": {
57-
"CMAKE_C_COMPILER": "gcc",
58-
"CMAKE_CXX_COMPILER": "g++",
59-
"VCPKG_TARGET_TRIPLET": "x64-mingw-dynamic"
60-
}
61-
},
62-
{
63-
"name": "gcc-linux-x64",
64-
"inherits": "base-release",
65-
"displayName": "GCC Linux x64 Release",
66-
"binaryDir": "${sourceDir}/build/gcc-linux-x64",
67-
"generator": "Ninja",
68-
"cacheVariables": {
69-
"CMAKE_C_COMPILER": "gcc",
70-
"CMAKE_CXX_COMPILER": "g++",
71-
"VCPKG_TARGET_TRIPLET": "x64-linux-dynamic"
72-
}
73-
},
74-
{
75-
"name": "gcc-linux-x86",
76-
"inherits": "base-release",
77-
"displayName": "GCC Linux x86 Release",
78-
"binaryDir": "${sourceDir}/build/gcc-linux-x86",
79-
"generator": "Ninja",
80-
"cacheVariables": {
81-
"CMAKE_C_COMPILER": "gcc",
82-
"CMAKE_CXX_COMPILER": "g++",
83-
"CMAKE_C_FLAGS": "-m32 -msse -msse2",
84-
"CMAKE_CXX_FLAGS": "-m32 -msse -msse2",
85-
"VCPKG_TARGET_TRIPLET": "x86-linux"
86-
}
87-
}
88-
],
89-
"buildPresets": [
90-
{
91-
"name": "msvc-x64",
92-
"configurePreset": "msvc-x64"
93-
},
94-
{
95-
"name": "msvc-x86",
96-
"configurePreset": "msvc-x86"
97-
},
98-
{
99-
"name": "llvm-x64",
100-
"configurePreset": "llvm-x64"
101-
},
102-
{
103-
"name": "gcc-mingw-x64",
104-
"configurePreset": "gcc-mingw-x64"
105-
},
106-
{
107-
"name": "gcc-linux-x64",
108-
"configurePreset": "gcc-linux-x64"
109-
},
110-
{
111-
"name": "gcc-linux-x86",
112-
"configurePreset": "gcc-linux-x86"
113-
}
114-
]
1+
{
2+
"version": 6,
3+
"cmakeMinimumRequired": {
4+
"major": 3,
5+
"minor": 15,
6+
"patch": 0
7+
},
8+
"configurePresets": [
9+
{
10+
"name": "base-release",
11+
"hidden": true,
12+
"cacheVariables": {
13+
"CMAKE_BUILD_TYPE": "Release",
14+
"CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
15+
}
16+
},
17+
{
18+
"name": "msvc-x64",
19+
"inherits": "base-release",
20+
"displayName": "MSVC x64 Release",
21+
"binaryDir": "${sourceDir}/build/msvc-x64",
22+
"toolset": "v143",
23+
"cacheVariables": {
24+
"CMAKE_MSVC_RUNTIME_LIBRARY": "MultiThreadedDLL",
25+
"VCPKG_TARGET_TRIPLET": "x64-windows"
26+
}
27+
},
28+
{
29+
"name": "msvc-x86",
30+
"inherits": "base-release",
31+
"displayName": "MSVC x86 Release",
32+
"binaryDir": "${sourceDir}/build/msvc-x86",
33+
"toolset": "v143",
34+
"architecture": "Win32",
35+
"cacheVariables": {
36+
"CMAKE_MSVC_RUNTIME_LIBRARY": "MultiThreadedDLL",
37+
"VCPKG_TARGET_TRIPLET": "x86-windows"
38+
}
39+
},
40+
{
41+
"name": "llvm-x64",
42+
"inherits": "base-release",
43+
"displayName": "LLVM x64 Release",
44+
"binaryDir": "${sourceDir}/build/llvm-x64",
45+
"toolset": "ClangCL",
46+
"cacheVariables": {
47+
"VCPKG_TARGET_TRIPLET": "x64-windows"
48+
}
49+
},
50+
{
51+
"name": "gcc-mingw-x64",
52+
"inherits": "base-release",
53+
"displayName": "GCC MinGW x64 Release",
54+
"binaryDir": "${sourceDir}/build/gcc-mingw-x64",
55+
"generator": "Ninja",
56+
"cacheVariables": {
57+
"CMAKE_C_COMPILER": "gcc",
58+
"CMAKE_CXX_COMPILER": "g++",
59+
"VCPKG_TARGET_TRIPLET": "x64-mingw-dynamic"
60+
}
61+
},
62+
{
63+
"name": "gcc-linux-x64",
64+
"inherits": "base-release",
65+
"displayName": "GCC Linux x64 Release",
66+
"binaryDir": "${sourceDir}/build/gcc-linux-x64",
67+
"generator": "Ninja",
68+
"cacheVariables": {
69+
"CMAKE_C_COMPILER": "gcc",
70+
"CMAKE_CXX_COMPILER": "g++",
71+
"VCPKG_TARGET_TRIPLET": "x64-linux-dynamic"
72+
}
73+
},
74+
{
75+
"name": "gcc-linux-x86",
76+
"inherits": "base-release",
77+
"displayName": "GCC Linux x86 Release",
78+
"binaryDir": "${sourceDir}/build/gcc-linux-x86",
79+
"generator": "Ninja",
80+
"cacheVariables": {
81+
"CMAKE_C_COMPILER": "gcc",
82+
"CMAKE_CXX_COMPILER": "g++",
83+
"CMAKE_C_FLAGS": "-m32 -msse -msse2",
84+
"CMAKE_CXX_FLAGS": "-m32 -msse -msse2",
85+
"VCPKG_TARGET_TRIPLET": "x86-linux"
86+
}
87+
}
88+
],
89+
"buildPresets": [
90+
{
91+
"name": "msvc-x64",
92+
"configurePreset": "msvc-x64"
93+
},
94+
{
95+
"name": "msvc-x86",
96+
"configurePreset": "msvc-x86"
97+
},
98+
{
99+
"name": "llvm-x64",
100+
"configurePreset": "llvm-x64"
101+
},
102+
{
103+
"name": "gcc-mingw-x64",
104+
"configurePreset": "gcc-mingw-x64"
105+
},
106+
{
107+
"name": "gcc-linux-x64",
108+
"configurePreset": "gcc-linux-x64"
109+
},
110+
{
111+
"name": "gcc-linux-x86",
112+
"configurePreset": "gcc-linux-x86"
113+
}
114+
]
115115
}

0 commit comments

Comments
 (0)