-
Notifications
You must be signed in to change notification settings - Fork 271
Add DEFAULT_ADDITIONAL_DIRS CMake option
#659
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add DEFAULT_ADDITIONAL_DIRS CMake option
#659
Conversation
c3a45bd to
a2dc357
Compare
a2dc357 to
a264bbf
Compare
|
|
||
| #include "default_base_directories.h" | ||
|
|
||
| const std::initializer_list<std::filesystem::path> Default_read_only_base_directories = @DEFAULT_ADDITIONAL_DIRS_CPP_EXPR@; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
you don't really need a .cpp file for this, the file configured by cmake should be the header. You can also use the D3 namespace
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I replaced the default_base_directories.cpp.in file with a new default_base_directories.h.in file, and I put the Default_read_only_base_directories constant into a namespace named D3. How does it look now?
BUILD.md
Outdated
| 4. Join each of the items in the list together. Put semicolons in between them: | ||
|
|
||
| ``` | ||
| C:%5CGames%5CDescent3;D:%5CD3-open-source |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I read your blog post and while this is all very interesting and I appreciate the effort, it feels very over-engineered and hard to use for what we want to do. I apologize if my previous message was not clear enough, but I would suggest we trade some flexibility for practicality here.
I've hacked together a toy example that seems to work well enough on Windows, given you escape backslashes properly. If we mention and acknowledge the limitations in the documentation, this looks like a more manageable and maintainable solution to our initial problem.
CMakeLists.txt
cmake_minimum_required(VERSION 3.30)
project(testjaypaths LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(DEFAULT_ADDITIONAL_DIRS "" CACHE STRING "A list of directories that Descent 3 will use as read-only base directories.")
string(REPLACE ";" "\",\n \"" DEFAULT_ADDITIONAL_DIRS_CPP_EXPR "${DEFAULT_ADDITIONAL_DIRS}")
string(PREPEND DEFAULT_ADDITIONAL_DIRS_CPP_EXPR "\"")
string(APPEND DEFAULT_ADDITIONAL_DIRS_CPP_EXPR "\"")
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/main.cpp.in
${CMAKE_CURRENT_SOURCE_DIR}/main.cpp
@ONLY
)
add_executable(testjaypaths main.cpp)main.cpp.in
#include <iostream>
#include <filesystem>
#include <vector>
int main() {
const std::vector<std::filesystem::path> pathlist{
@DEFAULT_ADDITIONAL_DIRS_CPP_EXPR@
};
for (auto& path: pathlist) {
std::cout << "Listing " << path.u8string() << std::endl;
for (const auto & entry : std::filesystem::directory_iterator(path)) {
std::cout << entry.path() << std::endl;
}
std::cout << std::endl;
}
}and configure with cmake -S. -Bbuild -GNinja -DDEFAULT_ADDITIONAL_DIRS="C:\\Users;C:\\Program Files\\Git"
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I read your blog post and while this is all very interesting and I appreciate the effort, it feels very over-engineered and hard to use for what we want to do.
I totally 100% agree. When I had written “That seems like a lot of work to make this value a CMake list instead of a C++ expression”, I was basically saying that using CMake lists would be very over-engineered and hard to use for what we want to do. Based on your response to the question “Is it worth it?”, I thought that you wanted me to create something that’s very over-engineered and hard to use.
I apologize if my previous message was not clear enough, but I would suggest we trade some flexibility for practicality here.
I've hacked together a toy example that seems to work well enough on Windows, given you escape backslashes properly. If we mention and acknowledge the limitations in the documentation, this looks like a more manageable and maintainable solution to our initial problem.
CMakeLists.txt
cmake_minimum_required(VERSION 3.30) project(testjaypaths LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) set(DEFAULT_ADDITIONAL_DIRS "" CACHE STRING "A list of directories that Descent 3 will use as read-only base directories.") string(REPLACE ";" "\",\n \"" DEFAULT_ADDITIONAL_DIRS_CPP_EXPR "${DEFAULT_ADDITIONAL_DIRS}") string(PREPEND DEFAULT_ADDITIONAL_DIRS_CPP_EXPR "\"") string(APPEND DEFAULT_ADDITIONAL_DIRS_CPP_EXPR "\"") configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp.in ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp @ONLY ) add_executable(testjaypaths main.cpp)main.cpp.in
#include <iostream> #include <filesystem> #include <vector> int main() { const std::vector<std::filesystem::path> pathlist{ @DEFAULT_ADDITIONAL_DIRS_CPP_EXPR@ }; for (auto& path: pathlist) { std::cout << "Listing " << path.u8string() << std::endl; for (const auto & entry : std::filesystem::directory_iterator(path)) { std::cout << entry.path() << std::endl; } std::cout << std::endl; } }and configure with
cmake -S. -Bbuild -GNinja -DDEFAULT_ADDITIONAL_DIRS="C:\\Users;C:\\Program Files\\Git"
I’m a little bit confused. In your previous comments, you made it sound like you wanted the text stored in DEFAULT_ADDITIONAL_DIRS to be interpreted as a CMake list, but your example code doesn’t interpret it as a CMake list. It looks like your example code uses a new custom list format that is similar to CMake lists but has less limitations:
| Numbered list | CMake list | New custom list format |
|---|---|---|
|
/Directory 1/;/Directory 2/ |
/Directory 1/;/Directory 2/ |
|
C:\Games\Descent3;D:\D3-open-source |
C:\\Games\\Descent3;D:\\D3-open-source |
|
/Directory that has \; in its name/;/Other directory/ |
/Directory that has \u003B in its name/;/Other directory/ |
|
(Impossible to represent without something like percent-encoding). | C:\\Directory with trailing backslash\\;C:\\Other directory |
|
(Impossible to represent without something like percent-encoding). | /Directory with an unbalanced square bracket [/;/Other directory/ |
|
(Impossible to represent without something like percent-encoding). | /Directory with \\\u003B in its name/;/Other directory/ |
Am I understanding you correctly? I ask because I think that this new custom list format is much better than CMake lists.
Also, you wrote “I would suggest we trade some flexibility for practicality here.” Could you elaborate? What makes your example code less flexible than the old version of this PR that used a C++ expression or the current version of this PR that uses CMake lists with percent-encoded items?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Based on your response to the question “Is it worth it?”, I thought that you wanted me to create something that’s very over-engineered and hard to use.
Why would I ? :) I should have taken the hint that you were not thinking about the same solution as I did when you wrote "That seems like a lot of work" because in my mind it did not.
I’m a little bit confused. In your previous comments, you made it sound like you wanted the text stored in DEFAULT_ADDITIONAL_DIRS to be interpreted as a CMake list, but your example code doesn’t interpret it as a CMake list. It looks like your example code uses a new custom list format that is similar to CMake lists but has less limitations:
lists in CMake have a loose definition because every value is actually a string. What I'm doing is interpreting the list passed as argument literally as a semi-colon separated list and performing string operations on it. So technically it is passed as a "list" but becomes a string that we change the way we want to get a C++ compatible string in the end. I hope this makes sense to you.
Also, you wrote “I would suggest we trade some flexibility for practicality here.” Could you elaborate? What makes your example code less flexible than the old version of this PR that used a C++ expression or the current version of this PR that uses CMake lists with percent-encoded items?
Well I did not do a lot of testing but I suppose you still can't put a backslash before the path separator or use ; in the middle of the string, so these may be limitations people may encounter.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also for the "string vs list" thing in CMake, the code building the C++ path list from a cmake list could probably use a foreach iteration on the list instead of replacing separators as I did, building the final C++ path list one path at a time, which would be closer a "list-based" solution. The result would be the same (but CMake loops are notoriously easy to mess up)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why would I ?
I thought that you wanted me to create something that’s very over-engineered and hard to use because “it would be more idiomatic to provide a list in the CMake sense and then bracket it and quote it automatically” and because “[…you] stumbled upon a patch in another (more professional) project [you] contribute to where we add an option such as the one here that also contains a list of paths, as a CMake list. It's been validated by a CMake maintainer that also commented in the CMake issue [I] linked above, so [you] have no doubt this is the right way to do it.” From my perspective, you had very clearly given reasons for why you would want me to create something that’s very over-engineered and hard to use.
lists in CMake have a loose definition because every value is actually a string.
I think that we might disagree bout the definition of the term “CMake list”. What is your definition of the term CMake list?
What I'm doing is interpreting the list passed as argument literally as a semi-colon separated list and performing string operations on it. So technically it is passed as a "list" but becomes a string that we change the way we want to get a C++ compatible string in the end. I hope this makes sense to you.
That was not helpful. When I asked “Am I understanding you correctly?”, I had expected you to say something along the lines of “yes, you did understand correctly”, or “no, you did not understand correctly; here are some specific things that you misunderstood.” Based on what you wrote, it’s not clear whether you think that I understood you correctly or not.
Well I did not do a lot of testing but I suppose you still can't put a backslash before the path separator or use
;in the middle of the string, so these may be limitations people may encounter.
It sounds like you disagree with part of what I posted. Specifically, it sounds like you disagree with these parts of the table that I had posted:
Numbered list CMake list New custom list format …
/Directory that has ; in its name//Other directory//Directory that has \; in its name/;/Other directory//Directory that has \u003B in its name/;/Other directory/
C:\Directory with trailing backslash\C:\Other directory(Impossible to represent without something like percent-encoding). C:\\Directory with trailing backslash\\;C:\\Other directory…
I just tried testing the relevant cells from that table again. Here are the results:
$ cmake -S. -Bbuild -GNinja -DDEFAULT_ADDITIONAL_DIRS='/Directory that has \u003B in its name/;/Other directory/'
-- The CXX compiler identification is GNU 13.3.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /nix/store/888bkaqdpfpx72dd8bdc69qsqlgbhcvf-gcc-wrapper-13.3.0/bin/g++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done (0.3s)
-- Generating done (0.0s)
-- Build files have been written to: /home/jayman/Documents/Home/VC/space_afraid/Git/partially_mine/Descent3/testjaypaths/build
$ cmake --build build
[2/2] Linking CXX executable testjaypaths
$ ./build/testjaypaths
Listing /Directory that has ; in its name/
terminate called after throwing an instance of 'std::filesystem::__cxx11::filesystem_error'
what(): filesystem error: directory iterator cannot open directory: No such file or directory [/Directory that has ; in its name/]
Aborted (core dumped)
$
$ cmake -S. -Bbuild -GNinja -DDEFAULT_ADDITIONAL_DIRS='C:\\Directory with trailing backslash\\;C:\\Other directory'
-- Configuring done (0.0s)
-- Generating done (0.0s)
-- Build files have been written to: /home/jayman/Documents/Home/VC/space_afraid/Git/partially_mine/Descent3/testjaypaths/build
$ cmake --build build
[2/2] Linking CXX executable testjaypaths
$ ./build/testjaypaths
Listing C:\Directory with trailing backslash\
terminate called after throwing an instance of 'std::filesystem::__cxx11::filesystem_error'
what(): filesystem error: directory iterator cannot open directory: No such file or directory [C:\Directory with trailing backslash\]
Aborted (core dumped)
$Based on those two tests, it seems like it is possible to put a backslash before semicolon delimiters, and it seems like it is possible to embed a literal semicolon in one of the items. Why do you think that your code does not allow you to do those two things?
Also for the "string vs list" thing in CMake, the code building the C++ path list from a cmake list could probably use a
foreachiteration on the list instead of replacing separators as I did, building the final C++ path list one path at a time, which would be closer a "list-based" solution. The result would be the same (but CMake loops are notoriously easy to mess up)
I was really surprised to hear the result would be the same if a foreach loop was used. I thought for sure that the result would be different if a foreach loop was used. I guess that I just don’t understand CMake foreach loops as well as I thought that I did. I tried modifying your example code so that it uses a foreach loop, but it produced a different results.
CMakeLists.txt:
cmake_minimum_required(VERSION 3.30)
project(testjaypaths LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(DEFAULT_ADDITIONAL_DIRS "" CACHE STRING "A list of directories that Descent 3 will use as read-only base directories.")
string(REPLACE ";" "\",\n \"" DEFAULT_ADDITIONAL_DIRS_CPP_EXPR_1 "${DEFAULT_ADDITIONAL_DIRS}")
string(PREPEND DEFAULT_ADDITIONAL_DIRS_CPP_EXPR_1 "\"")
string(APPEND DEFAULT_ADDITIONAL_DIRS_CPP_EXPR_1 "\"")
set(DEFAULT_ADDITIONAL_DIRS_CPP_EXPR_2 "")
foreach(DIR IN LISTS DEFAULT_ADDITIONAL_DIRS)
string(APPEND DEFAULT_ADDITIONAL_DIRS_CPP_EXPR_2 " \"${DIR}\",\n")
endforeach()
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/main.cpp.in
${CMAKE_CURRENT_SOURCE_DIR}/main.cpp
@ONLY
)
add_executable(testjaypaths main.cpp)main.cpp.in:
#include <iostream>
#include <filesystem>
#include <vector>
int main() {
const std::vector<std::filesystem::path> pathlist_1{
@DEFAULT_ADDITIONAL_DIRS_CPP_EXPR_1@
};
const std::vector<std::filesystem::path> pathlist_2{
@DEFAULT_ADDITIONAL_DIRS_CPP_EXPR_2@
};
std::cout << "pathlist_1 (" << pathlist_1.size() << " items):" << std::endl;
for (auto& path: pathlist_1) {
std::cout << "- " << path.u8string() << std::endl;
}
std::cout << "pathlist_2 (" << pathlist_2.size() << " items):" << std::endl;
for (auto& path: pathlist_2) {
std::cout << "- " << path.u8string() << std::endl;
}
}Results:
$ cmake -S. -Bbuild -GNinja -DDEFAULT_ADDITIONAL_DIRS=''
-- The CXX compiler identification is GNU 13.3.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /nix/store/888bkaqdpfpx72dd8bdc69qsqlgbhcvf-gcc-wrapper-13.3.0/bin/g++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done (0.3s)
-- Generating done (0.0s)
-- Build files have been written to: /home/jayman/Documents/Home/VC/space_afraid/Git/partially_mine/Descent3/testjaypaths/build
$ cmake --build build
[2/2] Linking CXX executable testjaypaths
$ ./build/testjaypaths
pathlist_1 (1 items):
-
pathlist_2 (0 items):
$
$ cmake -S. -Bbuild -GNinja -DDEFAULT_ADDITIONAL_DIRS='C:\\Directory with trailing backslash\\;C:\\Other directory'
-- Configuring done (0.0s)
-- Generating done (0.0s)
-- Build files have been written to: /home/jayman/Documents/Home/VC/space_afraid/Git/partially_mine/Descent3/testjaypaths/build
$ cmake --build build
[1/2] Building CXX object CMakeFiles/testjaypaths.dir/main.cpp.o
/home/jayman/Documents/Home/VC/space_afraid/Git/partially_mine/Descent3/testjaypaths/main.cpp: In function ‘int main()’:
/home/jayman/Documents/Home/VC/space_afraid/Git/partially_mine/Descent3/testjaypaths/main.cpp:11:3: warning: unknown escape sequence: '\;'
11 | "C:\\Directory with trailing backslash\;C:\\Other directory",
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[2/2] Linking CXX executable testjaypaths
$ ./build/testjaypaths
pathlist_1 (2 items):
- C:\Directory with trailing backslash\
- C:\Other directory
pathlist_2 (1 items):
- C:\Directory with trailing backslash;C:\Other directory
$
$ cmake -S. -Bbuild -GNinja -DDEFAULT_ADDITIONAL_DIRS='/Directory with with a semicolon (\;) in its name;/Other directory'
-- Configuring done (0.0s)
-- Generating done (0.0s)
-- Build files have been written to: /home/jayman/Documents/Home/VC/space_afraid/Git/partially_mine/Descent3/testjaypaths/build
$ cmake --build build
[1/2] Building CXX object CMakeFiles/testjaypaths.dir/main.cpp.o
FAILED: CMakeFiles/testjaypaths.dir/main.cpp.o
/nix/store/888bkaqdpfpx72dd8bdc69qsqlgbhcvf-gcc-wrapper-13.3.0/bin/g++ -MD -MT CMakeFiles/testjaypaths.dir/main.cpp.o -MF CMakeFiles/testjaypaths.dir/main.cpp.o.d -o CMakeFiles/testjaypaths.dir/main.cpp.o -c /home/jayman/Documents/Home/VC/space_afraid/Git/partially_mine/Descent3/testjaypaths/main.cpp
/home/jayman/Documents/Home/VC/space_afraid/Git/partially_mine/Descent3/testjaypaths/main.cpp:7:3: warning: missing terminating " character
7 | "/Directory with with a semicolon (\",
| ^
/home/jayman/Documents/Home/VC/space_afraid/Git/partially_mine/Descent3/testjaypaths/main.cpp:7:3: error: missing terminating " character
7 | "/Directory with with a semicolon (\",
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ninja: build stopped: subcommand failed.
$ cat main.cpp
#include <iostream>
#include <filesystem>
#include <vector>
int main() {
const std::vector<std::filesystem::path> pathlist_1{
"/Directory with with a semicolon (\",
") in its name",
"/Other directory"
};
const std::vector<std::filesystem::path> pathlist_2{
"/Directory with with a semicolon (;) in its name",
"/Other directory",
};
std::cout << "pathlist_1 (" << pathlist_1.size() << " items):" << std::endl;
for (auto& path: pathlist_1) {
std::cout << "- " << path.u8string() << std::endl;
}
std::cout << "pathlist_2 (" << pathlist_2.size() << " items):" << std::endl;
for (auto& path: pathlist_2) {
std::cout << "- " << path.u8string() << std::endl;
}
}
$
$ cmake -S. -Bbuild -GNinja -DDEFAULT_ADDITIONAL_DIRS='/Directory with a single square bracket ([) in its name;/Other directory'
-- Configuring done (0.0s)
-- Generating done (0.0s)
-- Build files have been written to: /home/jayman/Documents/Home/VC/space_afraid/Git/partially_mine/Descent3/testjaypaths/build
$ cmake --build build
[2/2] Linking CXX executable testjaypaths
$ ./build/testjaypaths
pathlist_1 (2 items):
- /Directory with a single square bracket ([) in its name
- /Other directory
pathlist_2 (1 items):
- /Directory with a single square bracket ([) in its name;/Other directory
$ Why isn’t the foreach loop producing the same results? Did I mess up the foreach loop somehow?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's stop wasting time on pointless arguing and apply the solution I gave you. There is zero real use case for supporting semi colons in default search paths anyway.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's stop wasting time on pointless arguing and apply the solution I gave you.
Unfortunately, I am not personally able to apply the solution that you gave me. From my perspective, there are two parts to the solution that you gave me. This is the first part:
I apologize if my previous message was not clear enough, but I would suggest we trade some flexibility for practicality here.
I've hacked together a toy example that seems to work well enough on Windows, given you escape backslashes properly. If we mention and acknowledge the limitations in the documentation, this looks like a more manageable and maintainable solution to our initial problem.
This is the second part:
CMakeLists.txt
cmake_minimum_required(VERSION 3.30) project(testjaypaths LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) set(DEFAULT_ADDITIONAL_DIRS "" CACHE STRING "A list of directories that Descent 3 will use as read-only base directories.") string(REPLACE ";" "\",\n \"" DEFAULT_ADDITIONAL_DIRS_CPP_EXPR "${DEFAULT_ADDITIONAL_DIRS}") string(PREPEND DEFAULT_ADDITIONAL_DIRS_CPP_EXPR "\"") string(APPEND DEFAULT_ADDITIONAL_DIRS_CPP_EXPR "\"") configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp.in ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp @ONLY ) add_executable(testjaypaths main.cpp)main.cpp.in
#include <iostream> #include <filesystem> #include <vector> int main() { const std::vector<std::filesystem::path> pathlist{ @DEFAULT_ADDITIONAL_DIRS_CPP_EXPR@ }; for (auto& path: pathlist) { std::cout << "Listing " << path.u8string() << std::endl; for (const auto & entry : std::filesystem::directory_iterator(path)) { std::cout << entry.path() << std::endl; } std::cout << std::endl; } }and configure with
cmake -S. -Bbuild -GNinja -DDEFAULT_ADDITIONAL_DIRS="C:\\Users;C:\\Program Files\\Git"
I believe that it’s impossible to implement the solution that you gave me because I believe that it’s impossible to implement both part 1 of the solution and part 2 of the solution at the same time. Part 1 of the solution says “trade some flexibility for practicality here” and “mention and acknowledge the limitations in the documentation”. I believe that those two phrases contradict the code from part 2 because I believe that it’s possbile to use pretty much any path with the code from part 2. I can’t name a single path that I personally believe cannot be represented using the new custom list format from part 2.
I’m not very confident in those beliefs that I just mentioned. I think that there’s a pretty good chance that I’m mistaken and that some of those beleifs are incorrect. Personally, I want someone to help me understand what parts of my beliefs are correct and what parts of my beliefs are incorrect. I want to learn. I thought that you would be the perfect person to help me learn since you know a lot more about C++ and CMake than I do. At this point though, it’s clear that you’re not willing to help me learn.
I would like to fulfill your request to apply the solution that you gave me, but I can’t. Instead, I’ve decided to implement part 2 of the solution that you gave me and completely ignore part 1 of the solution. Purposefully ignoring part 1 of the solution is a really bad thing for me to do in this situation, but unfortunately, that’s the best option at my disposal at the moment. I would much rather try to work on my belief that part 1 and part 2 contradict each other, but if I do that, then it’s just going to be misinterpreted as wasting time and as pointless arguing.
The main motivation behind this change is to make it easier to package Descent 3 for Linux. For example, let’s say that you’re packaging Descent 3 for Debian and you want to make the package work well with Debian’s game-data-packager. The package for the Descent 3 engine will put d3-linux.hog in one directory, and the package for the proprietary Descent 3 game data will put d3.hog into a different directory [1]. The Descent 3 engine package can use the DEFAULT_ADDITIONAL_DIRS CMake option in order to make sure that both d3-linux.hog and d3.hog are located automatically.
a264bbf to
c58633f
Compare
|
I just pushed a new version of this PR. Here are the changes:
|
|
Have you looked at #691 where I tagged you ? There is some feature overlap, excepted that my PR does not make the CMake variable a cache (user-configurable) variable. |
Yes, I have looked that that pull request. |
Lgt2x
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That looks good now, thanks for sticking with this and reworking as requested
Pull Request Type
Description
This pull request adds a
DEFAULT_ADDITIONAL_DIRSCMake option. This new CMake option can be used by packagers in order to help ensure that Descent 3 automatically finds game files that were installed by one or more packages. See the commit message for details.Related Issues
In the pull request description for #471, I had promised that I would open three additional pull requests if #471 got merged. This is one of those pull requests.
Checklist
Additional Comments