summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2021-10-12 00:32:11 +0800
committerruki <[email protected]>2021-10-12 00:32:11 +0800
commitb76924dfdc305e865244e6fa7460767b5cbbc794 (patch)
tree16eaa886c37258701609516a8fe92e2aa9f9360b
parent732ac08c207edf9baca28424a428e26d24f0032f (diff)
add defines to cmake/find_package
-rw-r--r--xmake/modules/package/manager/cmake/find_package.lua21
1 files changed, 17 insertions, 4 deletions
diff --git a/xmake/modules/package/manager/cmake/find_package.lua b/xmake/modules/package/manager/cmake/find_package.lua
index 653f69f16..a8eb067b3 100644
--- a/xmake/modules/package/manager/cmake/find_package.lua
+++ b/xmake/modules/package/manager/cmake/find_package.lua
@@ -82,10 +82,11 @@ function _find_package(cmake, name, opt)
-- run cmake
try {function() return os.vrunv(cmake.program, {workdir}, {curdir = workdir}) end}
- -- pares includedirs
+ -- pares defines and includedirs
local links
local linkdirs
local libfiles
+ local defines
local includedirs
local flagsfile = path.join(workdir, "CMakeFiles", name .. ".dir", "flags.make")
if os.isfile(flagsfile) then
@@ -110,6 +111,17 @@ function _find_package(cmake, name, opt)
has_include = true
end
end
+ elseif line:find("CXX_DEFINES =", 1, true) then
+ local flags = os.argv(line:split("=", {plain = true})[2]:trim())
+ for _, flag in ipairs(flags) do
+ if flag:startswith("-D") and #flag > 2 then
+ local define = flag:sub(3)
+ if define then
+ defines = defines or {}
+ table.insert(defines, define)
+ end
+ end
+ end
end
end
end
@@ -165,9 +177,10 @@ function _find_package(cmake, name, opt)
-- get results
if links or includedirs then
local results = {}
- results.links = table.reverse_unique(links)
- results.linkdirs = table.unique(linkdirs)
- results.libfiles = table.unique(libfiles)
+ results.links = table.reverse_unique(links)
+ results.linkdirs = table.unique(linkdirs)
+ results.defines = table.unique(defines)
+ results.libfiles = table.unique(libfiles)
results.includedirs = table.unique(includedirs)
return results
end