Skip to content
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

Inconsistent DLL naming in CMake vs. vcxproj builds at v2.10.0? #577

Open
garethsb opened this issue Oct 31, 2017 · 2 comments
Open

Inconsistent DLL naming in CMake vs. vcxproj builds at v2.10.0? #577

garethsb opened this issue Oct 31, 2017 · 2 comments

Comments

@garethsb
Copy link
Contributor

As was the case for v2.9, at v2.10.0, the TargetName set in the project files in the repo is like "cpprest140d_2_10". E.g. https://github.com/Microsoft/cpprestsdk/blob/master/Release/src/build/vs14/casablanca140.vcxproj#L37

However, after using CMake to generate project files instead, the TargetName in the resulting cpprest.vcxproj is simply "cpprest_2_10", i.e. without the VS version or DebugFileSuffix.

Is this intentional, or should CMake builds include the VS/debug disambiguators in the same way?

Thanks.

@garethsb
Copy link
Contributor Author

The repo .vcprox files also have Win32 and x64 (and ARM) builds. I understand a CMake-generated project supports a single platform, but I wonder whether the output directory should be made to still include e.g. "x64" in the path, as before?

@garethsb
Copy link
Contributor Author

garethsb commented Nov 9, 2017

Of course, setting CMAKE_DEBUG_POSTFIX to "d" successfully gives us different TargetName values for Release and Debug, but not in the style of the existing project files, instead we have "cpprest_2_10d".

To get TargetName as e.g. "cpprest140d_2_10", I suggest replacing the binary versioning for WIN32 in Release/src/CMakeLists.txt

  set_target_properties(cpprest PROPERTIES
    OUTPUT_NAME "cpprest_${CPPREST_VERSION_MAJOR}_${CPPREST_VERSION_MINOR}")

With something like this:

  string(SUBSTRING ${CMAKE_VS_PLATFORM_TOOLSET} 1 -1 TOOLSET)
  set(CPPREST_VERSION_POSTFIX "_${CPPREST_VERSION_MAJOR}_${CPPREST_VERSION_MINOR}")
  foreach(CFG ${CMAKE_CONFIGURATION_TYPES})
    string(TOUPPER ${CFG} CFG)
    get_target_property(CFG_POSTFIX cpprest ${CFG}_POSTFIX)
    if (NOT CFG_POSTFIX)
      # forget "NOTFOUND"
      set(CFG_POSTFIX)
    endif()
    set_target_properties(cpprest PROPERTIES
      ${CFG}_POSTFIX "${TOOLSET}${CFG_POSTFIX}${CPPREST_VERSION_POSTFIX}")
  endforeach()

(Maybe there's a more concise way of doing that with generator expressions though.)

I also found I needed to make one change to improve the INSTALL experience on Windows. Without this change, find_package(cpprestsdk REQUIRED) doesn't work for me, I have to use find_package(cpprestsdk REQUIRED NAMES cpprestsdk cpprest).

To avoid that, when configuring cpprestsdk, I override CMAKE_INSTALL_PREFIX to be "C:\Program Files\cpprestsdk" rather than "C:\Program Files\cpprest".

garethsb added a commit to garethsb/cpprestsdk that referenced this issue Nov 9, 2017
garethsb added a commit to garethsb/cpprestsdk that referenced this issue Nov 9, 2017
clrpackages pushed a commit to clearlinux-pkgs/cpprestsdk that referenced this issue Oct 3, 2018
…on 2.10.6

Adam Duskett (2):
      fix compiling with non-glib Linux c libraries
      fix template whitespace syntax (#715)

Alex Moriarty (1):
      [gcc-8][clang++-6] disable more -Werror warnings (#779)

Andreas Stieger (1):
      Fix gcc8 error/warning -Werror=format-truncation= (#787)

Billy O'Neal (13):
      Delete open() from _http_client_communicator (#819)
      Unbreak ASIO build on Windows. (#821)
      Merge pull request #687 from ZekeSnider/certificate-revocation-client-config
      Add branchless is_alnum borrowed from MSVC++'s std::regex' _Is_word; should be about 5x faster. (#823)
      Unify handling of tolower operations to avoid locale sensitivity. (#822)
      Deduplicate some code in HTTP headers. (#825)
      Various micro perf fixes and cleanup found while implementing CN overrides so far (#818)
      Workaround Apple clang bugs in constexpr evaluation. (#829)
      Merge pull request #826 from BillyONeal/dev/bion/clang_format
      Attempt to repair VS2013 builds. (#833)
      Implement host override of CN checking in the WinHTTP backend (#824)
      Avoid saying constexpr for VS2013. (#834)
      Implement host override of CN checking in the ASIO backend (#832)

Billy Robert O'Neal III (4):
      Add tests for set_validate_certificates(false).
      Add .clang-format file from vcpkg to cpprestsdk.
      Set namespace indentation to none.
      Apply clang-format to the asio implementation.

Chris Deering (1):
      Fix an issue where requests sent via authenticated proxies could not be successfully redirected from one domain to another

Gareth Sylvester-Bradley (7):
      Making crossplat::threadpool::shared_instance() safe to use in cpprest DLL (#611)
      Add support for retrieving HTTP version of a request in HTTP listener (#565)
      Fix VS2013 compilation errors (#678)
      Fix a regression in parsing an HTTP-Version string (#677)
      Don't use the ``U()`` preprocessor macro in public headers (#693)
      Fix compilation failure with ``CPPREST_FORCE_PPLX=1`` (resolves #734) (#746)
      Fix to work with commit 1e4717e5aefb080bfc3edd3b9d6ca6e2546c0111 (#681)

Gianfranco Costamagna (3):
      Fix boost1.63 build failure Fixes: #813 (#815)
      Update CMakeLists.txt to install the cmake bindings in the right location (#737)
      Fix another clang build failure (Fixes: #747) (#844)

Jan Nils Ferner (1):
      Fix XML in comment (#705)

John Hruby (1):
      fixed strand

Jonathan Gawrych (1):
      Fix string use after destruct introduced in merge commit b7fa0b1

Marcin Buchwald (1):
      No need for ostringstream here (#700)

Mathy Vanvoorden (1):
      Make it possible to set the user agent for websockets (#606)

René Meusel (1):
      set the default open() O_CREAT file permissions to 666 (#736)

Robert Andrzejuk (1):
      Fix for compilation with MSVC permissive- (#809)

Robert Schumacher (30):
      Fix UWP issues with min/max macros.
      Merge pull request #636 from JonathanGawrych/jag/UseProxyAfterDestruct
      Merge pull request #634 from garethsb-sony/http_server_asio-invalid_unicode
      Merge branch 'dll-naming' of https://github.com/garethsb-sony/cpprestsdk into garethsb-sony-dll-naming
      Extract the abi tag to make it more platform independent.
      Fix warning due to boost 1.66
      Merge pull request #638 from jhruby/master
      Merge pull request #646 from dimarusyy/master
      Merge pull request #630 from garethsb-sony/dll-naming
      Fix Windows build regression (do not include sys/time.h)
      Merge pull request #569 from aduskett/master
      Fix build regression on Windows (CHECK_INCLUDE_FILES requires C language support)
      Merge pull request #609 from garethsb-sony/gcc-4.7
      Merge pull request #566 from deeringc/auth_proxy_redirect
      Disable "disable_sni" test due to lack of robust test servers.
      Merge pull request #612 from garethsb-sony/force_http_listener_asio
      Merge pull request #624 from garethsb-sony/listen-backlog
      Fix min/max issues on Windows.
      Convert http_versions::from_string to use UTF-8
      Push version number to 2.10.2
      Fix test issues under /permissive-
      Add root CMakeLists.txt
      Do not fail on unrecognized content encoding (such as chunked) when compression is enabled.
      Fix some issues with gcc-5
      Remove empty objects when using CMake on Windows
      Push version to 2.10.3
      Update changelog
      Mint version 2.10.4
      Fix incorrect version.h. Fixes #942
      Fix compiler errors and mint v2.10.6

Thomas Barnekov (1):
      Fixed issue with Automatic Proxy detection when using WPAD on Windows 8.1 or higher (#722)

VZ (2):
      Require at least CMake 3.1 due to use of target_sources (#752)
      Fix handling of timed out connections kept alive in connection pool under Unix (#762)

Wu Yongwei (1):
      Fix a build problem on Clang. (#732)

Zeke Snider (1):
      Don't enable certificate revocation check if client config has validate certificates set to false

dimarusyy (1):
      #643 : ssl proxy port is hard coded to 443

garethsb-sony (14):
      Patch to get e.g. "cpprest140d_2_10.dll" as described in microsoft/cpprestsdk#577
      GCC 4.7 in experimental C++11 mode tokenises '<::' at the beginning of a template argument list or *_cast conversion incorrectly as the digraph '<:' (meaning '[') followed by a single ':'; the former can be resolved by -fpermissive, the latter isn't
      Workaround for libstdc++ issue with GCC 4.7 (ultimately fixed in GCC 4.9) that means std::this_thread::yield() and std::this_thread::sleep_for() are only conditionally provided; see https://stackoverflow.com/a/12961816
      At GCC 4.7, libstdc++ std::map didn't provide emplace(); using insert() is insignificant here
      At GCC 4.7, C++11 rules for noexcept specification of implicit destructors (and default specification on explicit destructors without exception specifications) aren't perfectly implemented
      At GCC 4.7, there are several bugs that cause "error: ‘this’ was not captured for this lambda function" to be reported incorrectly
      VS2013 incorrectly reports "warning C4573: the usage of 'symbol' requires the compiler to capture 'this' but the current default capture mode does not allow it"; the issue and workaround is the same as for GCC 4.7 in commit:5244af7c.
      Define http_listener_impl and http_server_api if CPPREST_FORCE_HTTP_LISTENER_ASIO is defined
      Suppress two instances of "warning C4503: 'identifier' : decorated name length exceeded, name was truncated" generated too late for disable to be effective inside push/pop
      Enable test create_https_listener_get on Windows if CPPREST_FORCE_HTTP_LISTENER_ASIO is defined
      VS2013 incorrectly reports "warning C4573: the usage of 'symbol' requires the compiler to capture 'this' but the current default capture mode does not allow it"; the issue and workaround is the same as for GCC 4.7 in commit:5244af7c.
      Add http_listener configuration for the backlog, the maximum length of the queue of pending connections on the port.
      Default the debug postfix for library filenames to "d" on Windows (it may still be overridden to the empty string)
      Handle std::range_error (from count_utf16_to_utf8) like web::uri_exception

juntek (1):
      fixes #628 (#629)

mobileben (1):
      #436 Building iOS doesn’t seem to work (#776)

sridhar madhugiri (msft) (1):
      Improve error handling in on_accept (#750)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant